我有一个订阅ACTION_NDEF_DISCOVERED
的挂起意向和订阅ACTION_TECH_DISCOVERED
的正常意向的应用程序。
看起来我需要有后一种意图,这样我的应用程序就会出现在NFC选择动作屏幕上。
然而,由于我的未决意图(它是根据API参考代码建模的),我必须扫描标记两次,以便激发OnNewIntent
。
因此出现了一些怀疑:
- 我真的需要两种意图来捕获应用内扫描和应用外扫描吗
- 为什么这个悬而未决的意图需要两次扫描?是因为我在清单和代码中订阅了它,如示例所示,还是因为我有两个NFC意图(尽管处于不同的NFC意图级别)
这是核心问题:
我如何做到这一点,以便在应用程序之外,我的应用程序出现在NFC操作窗口中,而在应用程序内部,只需要扫描OnNewIntent
即可启动?
根据您的描述,您的代码设置似乎基本正常。您可能错过了一件事:当您的应用程序从NFC操作窗口(应用程序选择器)启动时,应用程序的Activity
将用onCreate()
启动,您必须用getIntent()
检索NFC意图。只有在enableForegroundDispatch()
(带有PendingIntent
)之后,新的NFC意图才会导致onNewIntent()
被调用。
你可以这样做:
void onCreate(Bundle savedInstanceState) {
... // set up your Activity
handleNfcIntent(getIntent);
}
void onNewIntent(Intent intent) {
super.onNewIntent(intent);
handleNfcIntent(intent);
}
void handleNfcIntent(Intent intent) {
// NFC Intent handling code here
}