2

我有一个应用程序订阅了一个待处理的意图ACTION_NDEF_DISCOVERED和一个普通的意图订阅ACTION_TECH_DISCOVERED

看起来我需要后一种意图,以便我的应用程序将出现在 NFC 选择操作屏幕中。

但是,根据我的待定意图(以 API 参考代码为模型),我必须扫描标签两次OnNewIntent才能触发。

于是产生了几个疑惑:

  1. 我真的需要两个意图来捕获应用内扫描和应用外扫描吗?
  2. 为什么挂起的意图需要两次扫描?是因为我在清单和代码中订阅它,如示例所示,还是因为我有两个 NFC 意图(尽管处于不同的 NFC 意图级别)?

这是核心问题:

我该如何进行这项工作,以便在应用程序之外,我的应用程序出现在 NFC 操作窗口中,而在应用程序内部,只需要扫描OnNewIntent才能触发?

4

1 回答 1

4

根据您的描述,您的代码设置看起来大部分都可以。您可能错过了一件事情:当您的应用程序从 NFC 操作窗口(应用程序选择器)启动时,您的应用程序Activity将启动,onCreate()并且您必须使用getIntent(). 只有在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
}
于 2012-03-22T08:56:37.223 回答