如何在 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)
我需要获取设备的 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)