РЕДАКТИРОВАТЬ: Я нашел решение, см. Ниже
Мой первый пост на 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 && 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