スキャンすると、購入したショップのリンクが開く 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 を検出するためのフィルターが不足していると思われます。
ありがとうございました