【发布时间】:2014-09-23 21:51:09
【问题描述】:
我正在编写一个可以使用 URI 方案侦听 NFC 标签的应用程序。
我有一个意图过滤器:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="[theschemeofmyuri]" />
</intent-filter>
并且该活动正在为我的 NFC 标签正确启动。现在我已经编写了一段不洁的代码来尝试提取 URI,尽管我已经删除了错误处理以使其更易于在 SO 上阅读:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
NdefMessage[] msgs;
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
NdefRecord[] recs = msgs[0].getRecords();
Log.i(TAG, new String(recs[0].getPayload(), "UTF-8"));
这似乎是在开始时以空字节打印出来。
问题是,我知道系统已经为意图过滤器解析了 URI。我现在需要再次解析它吗?这个空字节呢。我可以忽略它吗?
真正的问题是,有没有更简单的方法?
【问题讨论】:
标签: android android-intent uri nfc ndef