【问题标题】:My cordova application not launching after NFC tag detect检测到 NFC 标签后我的 Cordova 应用程序未启动
【发布时间】:2014-12-28 14:05:33
【问题描述】:

我正在使用Apache cordova 构建安卓应用程序。我做了一个带有NFC 功能的应用程序。

我们已经将数据写入 NFC 标签,mimetype: myApp/firstNFCApp。在我的应用程序中,只要检测到带有此mimetype 的标签,我的应用程序就会读取数据并以用户友好的方式显示该数据。我实现的这种方式,它工作正常。这是我编写的从标签获取数据的代码

nfc.addNdefListener(
     function(nfcEvent){
       console.log(nfc.bytesToString(nfcEvent.tag.ndefMessage[0].payload));
     },
     function(){
       console.log("sucessfully created");
     },
     function(){
       console.log("something went wrong");
     }
);

现在我想启动我的应用程序,只要设备检测到带有 mimetype: myApp/firstNFCApp 的标签。为此,我编写了以下代码

<intent-filter>
  <data android:mimeType="myApp/firstNFCApp" />
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

我在androidManifest.xml 文件中添加了android:noHistory="true"activity 元素。

我想要什么:

如果设备检测到任何带有我的 mimetype 的标签,想要启动应用程序还需要触发该回调(意味着,控制台将打印)。我正在使用 chariotsolutions/phonegap-nfc 插件。

这个方法,我试过了,不行。谁能帮我谢谢。

【问题讨论】:

    标签: android cordova phonegap-plugins nfc ndef


    【解决方案1】:

    为了在您的应用中接收 NFC Intent 以及整个 NDEF 消息,您需要定义一个与上述 NDEF 消息中的第一条记录匹配的适当 Intent 过滤器:

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <action android:name="android.nfc.action.TAG_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
    

    Refer how to handle NFC

    【讨论】:

      【解决方案2】:

      正如 SweetWisher 所写,您需要为您的意图过滤器(android.nfc.action.NDEF_DISCOVERED( 在您的情况下)定义一个正确的操作。此外,您应该知道NDEF_DISCOVERED 意图过滤器中使用的 MIME 类型必须始终为 all-小写。原因是根据 RFC,MIME 类型不区分大小写,但 Android 的 Intent 过滤器匹配区分大小写。因此,Android 会在匹配之前将 MIME 类型转换为全小写,以克服区分大小写的问题问题(见this answer for a more detailed explaination)。

      因此,您的意图过滤器将如下所示:

      <intent-filter>
          <action android:name="android.nfc.action.NDEF_DISCOVERED" />
          <category android:name="android.intent.category.DEFAULT" />
          <data android:mimeType="myapp/firstnfcapp" />
      </intent-filter>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 2016-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多