Идентификация идентификатора метки 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
}

Я написал полное руководство, которое должно вам помочь.

Другие вопросы по тегам