0

次のコードを使用して、Android の NFC タグの一意の識別子を識別しようとしています。

@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() がバイト配列を返すことはわかっているので、それを解析して文字列に変換する必要があります。しかし、少なくとも、このコードはアプリをクラッシュさせるのではなく、何らかの値を返すことを期待しています。それを修正する方法はありますか?

編集: 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)
4

1 に答える 1

0

あなたのタグがnullであることは間違いありません。最初にアクション文字列を確認する必要があります

String action = intent.getAction();
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
    //... do something
}

私はあなたを助けるはずの完全なチュートリアルを書きました。

于 2013-08-19T20:33:40.907 に答える