使用 Android 应用程序记录,您只能确保不会因为您的 NDEF 消息而启动其他应用程序。您无法阻止另一个应用程序(当该应用程序位于前台时)接收您发送的 NDEF 消息。您也不能真正阻止您的应用程序接收不适合您的应用程序的 NDEF 消息。但是,您可以显着限制您的应用接收的 NDEF 消息。
为了限制您的应用应接收的 NDEF 消息,您首先要确定要用于过滤的 NDEF 记录。例如。特定于您的应用的 NFC 论坛外部类型(请注意,类型名称必须为 全小写):
+-----------------------------------------+
| urn:nfc:ext:example.com:mytype | mydata |
+-----------------------------------------+
您可以使用NdefRecord.createExternal("example.com", "mytype", mydata); 创建它。接下来,您将使用此记录作为您的 NDEF 消息的 first 记录。
现在,您可以创建意图过滤器以仅匹配该特定记录。例如。在您的应用程序的 mainfest 中:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:scheme="vnd.android.nfc"
android:host="ext"
android:pathPrefix="/com.example:mytype" />
</intent-filter>
或者前台调度系统的intent filters参数:
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
ndef.addDataScheme("vnd.android.nfc");
ndef.addDataAuthority("ext", null);
ndef.addDataPath("/com.example:mytype", PatternMatcher.PATTERN_PREFIX);
IntentFilter[] intentFiltersArray = new IntentFilter[] { ndef, };