Android NFC意图没有开始我的活动

Fly*_*del 9 android nfc android-intent

我正在尝试编写一个简单的应用程序来与NFC标签交互,但我似乎无法让我的手机做任何事情,但触发默认的NFC标签应用程序.我真的只是希望能够拦截我扫描的任何标签,确定它是否有一些数据,并采取相应的措施.

现在我的清单文件看起来像

<uses-sdk android:minSdkVersion="10" />
<uses-feature android:name="android.hardware.nfc" android:required="true"/>
<uses-permission android:name="android.permission.NFC"/>

<application 
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".NfcActivity"
        android:label="@string/app_name">
        <intent-filter>
           <action android:name="android.intent.action.MAIN"/>
           <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        </intent-filter>
    </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

但是,当扫描NFC标签时,我从未看到活动开始.我在这里错过了什么吗?我尝试将意图过滤器置于一个内部BroadcastReceiver并且没有运气......

NFC*_*guy 24

您扫描的所有NFC标签都无法启动您的应用.Android将根据intent过滤器的具体方式确定最合适的应用程序.但是,如果您的应用程序在前台运行,您可以使用NFC前台调度来捕获所有NFC意图.

另外onCreate():

mAdapter = NfcAdapter.getDefaultAdapter(this);
PendingIntent pendingIntent = PendingIntent.getActivity(
  this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
Run Code Online (Sandbox Code Playgroud)

另外onResume():

mAdapter.enableForegroundDispatch(this, pendingIntent, null, null);
Run Code Online (Sandbox Code Playgroud)

另外onPause():

mAdapter.disableForegroundDispatch(this);
Run Code Online (Sandbox Code Playgroud)

onNewIntent你可以得到这样的NFC标签:

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Run Code Online (Sandbox Code Playgroud)


tec*_*ces 7

SDK文档将此作为基本示例显示.

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="text/plain" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)