Android NFC应用程序检测

Android NFC应用程序检测,android,nfc,intentfilter,ndef,Android,Nfc,Intentfilter,Ndef,我想在我的Android应用程序中使用NFC。我能够使用NFC读写数据。我希望我的应用程序从特定应用程序接收NFC数据,而不是从设备中存在的所有其他应用程序接收NFC数据 我为此使用了以下代码 NdefRecord.createApplicationRecord("com.example.android.beam") 但它使用其他包名与应用程序通信 请在这方面帮助我。对于Android应用程序记录,您只能确保不会因为您的NDEF消息而启动其他应用程序。您无法阻止另一个应用程序在前台接收您发送的

我想在我的Android应用程序中使用NFC。我能够使用NFC读写数据。我希望我的应用程序从特定应用程序接收NFC数据,而不是从设备中存在的所有其他应用程序接收NFC数据

我为此使用了以下代码

NdefRecord.createApplicationRecord("com.example.android.beam")
但它使用其他包名与应用程序通信


请在这方面帮助我。

对于Android应用程序记录,您只能确保不会因为您的NDEF消息而启动其他应用程序。您无法阻止另一个应用程序在前台接收您发送的NDEF消息。你也不能真的阻止你的应用程序接收不适用于你的应用程序的NDEF消息。但是,您可以明显限制应用程序接收的NDEF消息

为了限制你的应用程序应该接收的NDEF消息,你首先要决定一个NDEF记录,你要用它来过滤。例如,特定于您的应用程序的NFC论坛外部类型请注意,类型名称必须全部小写:

您可以使用NdefRecord.createExternalexample.com、mytype、mydata;创建此文件;。接下来,您将使用此记录作为NDEF消息的第一条记录

现在,您可以创建仅匹配该特定记录的意图过滤器。例如,在应用程序的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-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>
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, };