我有一个标签,扫描后会打开我购买它的商店的链接。现在,我想用我自己的数据编写它。我有一个表格,我写我想写的东西,当我按下“开始写”按钮时,以下函数运行:
private void startWriting() {
//This variable is actually of class to disable the foreground dispatch when the onPause method is called
NfcAdapter mAdapter = NfcAdapter.getDefaultAdapter(this);
changeStatus(false);
findViewById(R.id.bt_write).setVisibility(View.GONE);
findViewById(R.id.bt_stop).setVisibility(View.VISIBLE);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, getServiceIntent(), 0);
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
try {
ndef.addDataType("*/*"); /*
* Handles all MIME based dispatches.
* You should specify only the ones that you
* need.
*/
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("fail", e);
}
IntentFilter[] intentFiltersArray = new IntentFilter[] { ndef };
String[][] techListsArray = new String[][] { new String[] { NfcF.class.getName(), MifareClassic.class.getName(), MifareUltralight.class.getName() } };
mAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray);
}
因此,目标是在找到 TAG 时启动服务。该函数getServiceIntent()
创建一个意图并将数据作为额外的。它没有什么特别之处。
问题是,即使在运行之后,Android 仍然会启动浏览器而不是写入 TAG。最奇怪的是,如果我首先使用 NFC 任务启动器在 TAG 上写一些东西,那么我可以使用我的应用程序来写它。我的猜测是我缺少一些过滤器来检测标签。
谢谢