如何在 Android 中获取 NFC id?

How to get NFC id in Android?

我需要获取设备的 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 语句中输入。有人有想法吗?

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

我会去if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())),但是因为没有设备无法测试^^

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