1.) Попробуйте запустить действие, используя фильтр намерений, как обычно. Если действие, соответствующее намерению, также соответствует AAR, запустите действие.
Это означает, что действие A имеет NDEF_DISCOVERED
фильтр намерений, который соответствует типу данных первой записи NDEF сообщения NDEF в теге и что AAR соответствует имени пакета приложения, которому принадлежит действие A.
2.) Если действие, которое фильтрует намерение, не соответствует AAR, если несколько действий могут обработать намерение или если ни одно действие не обрабатывает намерение, запустите приложение, указанное в AAR.
Это означает, что есть
- действие A с фильтром намерений
NDEF_DISCOVERED
, который не соответствует типу данных первой записи NDEF сообщения NDEF в теге и, что AAR соответствует имени пакета приложения, которое деятельность А принадлежит,
- действие A и действие B, оба из которых имеют фильтр намерений
NDEF_DISCOVERED
, соответствующий типу данных первой записи NDEF сообщения NDEF в теге и strong> что AAR соответствует имени пакета приложения, которому принадлежат действия A и B, или
- никакая активность приложения, соответствующая AAR, не имеет фильтра намерения
NDEF_DISCOVERED
.
В этом случае приложение с именем пакета, совпадающим с именем в AAR, запускается путем отправки действия намерения MAIN
с категорией LAUNCHER
для первого действия в вашем приложении, которое имеет такой фильтр намерений. Следовательно, приложение «запускается», как если бы был нажат значок запуска для этого действия.
3.) Если ни одно приложение не запускается с помощью AAR, перейдите в Google Play, чтобы загрузить приложение на основе AAR.
Это означает, что если нет приложения с именем пакета, совпадающим с именем в AAR, то открывается Play Store.
Так, например, если у вас есть сообщение NDEF
+------------------------------+----------------------+
| URI: http://www.example.com/ | AAR: com.example.app |
+------------------------------+----------------------+
тогда вам понадобится приложение с именем пакета com.example.app
, которое имеет одно действие с фильтром намерений, например
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="www.example.com" android:pathPrefix="/" />
</intent-filter>
Сценарий 1 (соответствие активности А):
<manifest package="com.example.app" ... >
<uses-permission android:name="android.permission.NFC" />
<application ...>
<activity android:name="MAIN" ...>
<intent-filter>
<action android:name="android.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="A" ...>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="www.example.com" android:pathPrefix="/" />
</intent-filter>
</activity>
</application>
</manifest>
Сценарий 2a (нет совпадений для действия A, запущен MAIN):
<manifest package="com.example.app" ... >
<uses-permission android:name="android.permission.NFC" />
<application ...>
<activity android:name="MAIN" ...>
<intent-filter>
<action android:name="android.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="A" ...>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
</application>
</manifest>
Сценарий 2b (сопоставление действий A и B, MAIN запущен):
<manifest package="com.example.app" ... >
<uses-permission android:name="android.permission.NFC" />
<application ...>
<activity android:name="MAIN" ...>
<intent-filter>
<action android:name="android.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="A" ...>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="www.example.com" android:pathPrefix="/" />
</intent-filter>
</activity>
<activity android:name="B" ...>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="www.example.com" android:pathPrefix="/" />
</intent-filter>
</activity>
</application>
</manifest>
Сценарий 2c (нет интент-фильтра NDEF_DISCOVERED
, запущен MAIN):
<manifest package="com.example.app" ... >
<uses-permission android:name="android.permission.NFC" />
<application ...>
<activity android:name="MAIN" ...>
<intent-filter>
<action android:name="android.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
person
Michael Roland
schedule
18.06.2015