0

スキャンすると、購入したショップのリンクが開く TAG があります。今、私は自分のデータでそれを書きたいと思っています。書きたいことを書くフォームがあり、「書き込み開始」ボタンを押すと、次の関数が実行されます。

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()はインテントを作成し、データを Extra として配置します。特別なことは何もありません。

問題は、これが実行された後でも、Android が TAG を書き込む代わりにブラウザを起動することです。最も奇妙なのは、たとえば NFC タスク ランチャーなどを使用して最初に TAG に何かを書き込むと、アプリを使用してそれを書き込むことができることです。私の推測では、TAG を検出するためのフィルターが不足していると思われます。

ありがとうございました

4

0 に答える 0