Идентификация идентификатора метки NFC
Я пытаюсь определить уникальный идентификатор тега NFC на Android с помощью следующего кода:
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Tag myTag = (Tag) getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);
String nFCID = myTag.getId().toString();
Toast.makeText(getApplicationContext(), "NFC id is: "+ nFCID, Toast.LENGTH_SHORT).show();
}
К сожалению, когда я развертываю приложение на реальном устройстве и сканирую тег NFC, мое приложение вылетает с сообщением "К сожалению, xyz должен остановиться...". Я знаю, что getID() вернет байтовый массив, и мне нужно проанализировать его в String. Но, по крайней мере, я ожидаю, что этот код будет возвращать некоторые значения, а не вылетать из приложения. Есть идеи как это исправить?
Отредактировано: выходы LogCat:
W/dalvikvm(25548): threadid=1: thread exiting with uncaught exception group=0x41b652a0)
E/AndroidRuntime(25548): FATAL EXCEPTION: main
E/AndroidRuntime(25548): java.lang.RuntimeException:
Unable to start activity ComponentInfo{com.xyz.nfcid/com.xyz.nfcid.MainActivity}:
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
1 ответ
Я почти уверен, что твой тег нулевой. Вы должны сначала проверить действие String
String action = intent.getAction();
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
//... do something
}
Я написал полное руководство, которое должно вам помочь.