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

我很确定,你的标签是空的。您应该首先检查操作字符串

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

我已经写了一个完整的教程,它应该可以帮助你。

于 2013-08-19T20:33:40.907 回答