#android #intentfilter #nfc
#Android #intentfilter #nfc
Вопрос:
РЕДАКТИРОВАТЬ: я нашел решение, см. Ниже
Мой первый пост о StackOverflow. Однако я некоторое время читал об этой проблеме без решения, которое работает.
Что я хотел бы сделать, так это зарегистрировать следующее намерение: android.nfc.action.TAG_DISCOVERED
Я делаю следующее в своем коде:
IntentFilter filter = new IntentFilter();
filter.addAction("android.nfc.action.TAG_DISCOVERED");
filter.addCategory("android.intent.category.DEFAULT");
Log.d(TAG, "Created the new filter");
reciever = new NFCBroadcastReciever(this);
Log.d(TAG, "Created the new Broadcast Reciever");
this.registerReceiver(reciever, filter);
Log.d(TAG, "Registered new reciever");
BroadcastReciever определяется следующим образом:
общедоступный класс NFCBroadcastReciever расширяет BroadcastReceiver {
private Screen screen;
public static String TAG = "NFCBroadcastReciever";
NFCBroadcastReciever(Screen _screen){
screen = _screen;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "Action recieved: " action);
if(action != null amp;amp; NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)){
paymentScreen.onNewIntent(intent);
}
}
}
Однако я получаю исключение, что намерение, запускаемое при чтении тега, не имеет соответствующей активности. Я хотел бы иметь возможность начинать прослушивание событий NFC только в определенный момент в моем приложении.
Заранее спасибо за вашу помощь.
На самом деле я нашел решение проблемы, ключ к тому, чтобы события NFC происходили только при определенном действии, пока оно активно, а не при выполнении других действий. Пример в Android SDK объясняет это: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html
Комментарии:
1. Было бы лучше ответить на ваш вопрос отдельным сообщением и пометить его как ответ.
2. спасибо за комментарий, новичок в stackoverflow, добавил ответ в виде отдельного поста
Ответ №1:
На самом деле я нашел решение проблемы, ключ к тому, чтобы события NFC происходили только при определенном действии, пока оно активно, а не при выполнении других действий. Пример в Android SDK объясняет это: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html
Комментарии:
1. Этот ответ помог мне, но эта ссылка на образец больше не существует. Документация по отправке на передний план находится здесь в разделе Advanced NFC.
Ответ №2:
Вы намерены начать действие при получении широковещательной передачи? Мне не кажется, что paymentScreen.onNewIntent(intent);
это поможет достичь этого. Вместо этого вам, вероятно, потребуется создать намерение, которое вы можете использовать с startActivity (), и вы, вероятно, захотите включить соответствующие данные из намерения вашего широковещательного приемника в свое намерение активности в виде дополнительных данных.