我正在尝试使用以下代码在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()将返回字节数组,我必须将其解析为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)
答案 0 :(得分:0)
我很确定,你的标签是空的。你应该先检查一下动作String
String action = intent.getAction();
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
//... do something
}
我写了一个完整的tutorial,它可以帮到你。