如何更改默认的Android NFC事件?

时间:2015-09-02 14:53:30

标签: android triggers nfc android-4.4-kitkat

我编写了使用NFC功能的应用程序。 我使用4.4.4 Android设备来测试它们。

这是我AndroidMainfest的一部分:                                                                 

        <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>

我的问题是:当设备接近nfc标签时,设备打开默认nfc应用程序&#34;触发&#34; (当它没有进入谷歌播放时)我安装了其他nfc应用程序,但选择的应用程序对话框应用程序不会出现),而且我无法捕获事件。

1 个答案:

答案 0 :(得分:1)

触发器应用程序将NdefRecord设置为特定的mime类型,因此Android系统会检查是否有一个应用程序可以使用特定的mime类型打开此标记。

请阅读:http://developer.android.com/guide/topics/connectivity/nfc/nfc.html#ndef

因此,如果您想从Trigger中捕获标记,则必须在activity中向AndroidManifest添加过滤器。例如,像这样:

     <activity android:name=".MyActivity">
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="text/scriptlet"/>
            <data android:mimeType="text/x-nfc-taskl"/>
            <data android:mimeType="x/nfctl"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="application/nfctl"/>
            <data android:mimeType="application/nfctlat"/>
            <data android:mimeType="application/nfctlfree"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="x/nfctl-s"/>
            <data android:mimeType="application/nfctl"/>
        </intent-filter>
    </activity>