intent-filter + nfc.addMimeTypeListener一次又一次地重新打开应用程序

时间:2017-06-09 11:12:16

标签: android cordova phonegap-plugins nfc

我使用phonegap-nfc来对NFC标签执行所有读/写操作。与nfc标记的交互仅在应用程序的几个页面中启用。

现在我正在尝试添加新功能,即点击NFC标签启动我的应用程序(当应用程序未运行时)并对标签执行读取操作。启动应用程序正在运行。

我在 AndroidManifest.xml 中添加了intent-filter,如下所示:



<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <data android:host="ext" android:pathPrefix="/<my-urn>" android:scheme="vnd.android.nfc" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
&#13;
&#13;
&#13;

并添加 nfc.addMimeTypeListener ,如下所示:

&#13;
&#13;
nfc.addMimeTypeListener('text/any', function () {
  // route to particular page
}, function () {
  console.log('success!');
}, function () {
  console.log('Failed!');
});
&#13;
&#13;
&#13;

当我添加 nfc.addMimeTypeListener 时我遇到问题,如果我只是添加了intent-filter(没有 nfc.addMimeTypeListener ),它会启动应用程序并且当我点击NFC标签时,它既不会做任何事情,也不会执行必要的nfc操作,基于我所在的页面 - 这是正确的行为。但是当我添加nfc.addMimeTypeListener添加到intent-filter时,如果我在应用程序已经打开时点击NFC,它会一次又一次地重新打开应用程序,而不是执行必要的nfc操作。没有得到我做错的事情!

任何帮助都会得到满足!

1 个答案:

答案 0 :(得分:0)

您可以尝试删除侦听器并在清单本身中添加mimeType,例如<data android:mimeType="text/plain" />