编辑:我找到了解决方案,见下文
我在 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