如何在Android中获得NFC ID?

时间:2015-04-23 13:14:32

标签: android nfc

我需要获取设备的NFC ID。

AndroidManifest看起来像这样:

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        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.TAG_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>

    </activity>
</application>

为了获得id,在MainActivity(不是片段)中,我添加了以下代码:

    public void onResume() {
    super.onResume();
    Log.i("MYTAG", "entered");
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
        Log.i("MYTAG", "enter here also");
        Tag tag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);
        Toast.makeText(getApplicationContext(), "TAG: " + tag.getId().toString(), Toast.LENGTH_LONG).show();
    }
}

但这不是在if语句中输入的。有没有人有想法?

我尝试了从stackoverflow找到的不同答案,但没有任何改变。

2 个答案:

答案 0 :(得分:0)

我会转而去if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())),但由于缺乏设备我无法测试它^^

答案 1 :(得分:0)

问题是您在清单intent-filter中为TAG_DISCOVERED指定但在代码中尝试与ACTION_NDEF_DISCOVERED匹配。 我在onResume中用TAG_DISCOVERED测试了你的代码,它没问题(Nexus 5)