0

我有一个标签,扫描后会打开我购买它的商店的链接。现在,我想用我自己的数据编写它。我有一个表格,我写我想写的东西,当我按下“开始写”按钮时,以下函数运行:

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 上写一些东西,那么我可以使用我的应用程序来写它。我的猜测是我缺少一些过滤器来检测标签。

谢谢

4

0 回答 0