带着待定的意图和意图收听NFC



我有一个订阅ACTION_NDEF_DISCOVERED的挂起意向和订阅ACTION_TECH_DISCOVERED的正常意向的应用程序。

看起来我需要有后一种意图,这样我的应用程序就会出现在NFC选择动作屏幕上。

然而,由于我的未决意图(它是根据API参考代码建模的),我必须扫描标记两次,以便激发OnNewIntent

因此出现了一些怀疑:

  1. 我真的需要两种意图来捕获应用内扫描和应用外扫描吗
  2. 为什么这个悬而未决的意图需要两次扫描?是因为我在清单和代码中订阅了它,如示例所示,还是因为我有两个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
}

最新更新