我有一个问题,我在这个网站上没有找到解决方案,但如果这是一个重复的问题,我道歉。
我正在开发一个应用程序,作为在员工开始/完成工作时注册的终端,以及众多其他事项。它的工作方式是,在NFC开启的情况下,他们扫描他们的NFC卡,我的应用程序读取它们并最终将适当的信息发送到服务器。
但是,如果应用程序已经打开(它应该一直打开,所以这是一个问题)并扫描NFC卡,它会重新打开应用程序。当然,这样做是因为我已经在清单中设置了它。但如果我不在清单中添加所有这些行,我找不到让我的应用程序接收NFC扫描意图的方法:
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
我试过没有写过但是在这种情况下它没有读卡,而是程序选择器出现在手机上,或者如果手机没有合适的应用程序,它只是说"NFC read error"
。
有人有解决方案吗?这是我项目的最后一步,我遇到了很多麻烦,并感谢任何帮助。这可能是我看不到的简单事情,但无论如何我都会感激。
答案 0 :(得分:1)
Android活动有不同的启动模式。如果您设置单个实例,它将使用已打开的活动,并且不会创建新活动。您可以在覆盖方法onNewIntent()
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// read intent values here
}
答案 1 :(得分:0)
你可以使用broadcastReceiver, - 首先启动接收器进行活动
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("whateveryouwant");
notificationBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// here you can read the intent and customize the action;
int usage = intent.getIntExtra("usage",1000);
}
}
};
第二次注册广播
registerReceiver(notificationBroadcastReceiver,IntentFilter的);
最后取消注册onDestroy方法
中的广播@覆盖 protected void onDestroy(){
if(notificationBroadcastReceiver != null){
unregisterReceiver(notificationBroadcastReceiver);
notificationBroadcastReceiver = null;
}
super.onDestroy();
}
执行此操作后,您可以发送广播()
一个小指南:https://developer.android.com/reference/android/content/BroadcastReceiver.html
希望它会有所帮助