My cordova application not launching after NFC tag

2019-02-27 05:17发布

I am using Apache cordova to build android applications. I made an application with NFC feature.

we already written data into NFC tag, with mimetype: myApp/firstNFCApp. Inside my application whenever detect tag with this mimetype my application will read data and showing that data into user friendly manner. This way I implemented, it's working fine.This was the code I written to fetch data from tag

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

Now I want to launch my application,whenever device detect a tag with mimetype: myApp/firstNFCApp . For this, I written following code

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

and I added android:noHistory="true" to activity element in androidManifest.xml file.

What I want :

If the device detect any tag with my mimetype,want to launch application also need's to trigger that callback(means,console will print).I am using chariotsolutions/phonegap-nfc plugin.

This is way, I tried it's not working. can anyone help me thank you.

2条回答
Anthone
2楼-- · 2019-02-27 05:50

In order to receive an NFC intent together with the whole NDEF message in your app, you would need to define a proper intent filter that matches the first record in the above NDEF message:

<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

查看更多
Luminary・发光体
3楼-- · 2019-02-27 06:13

As SweetWisher wrote, you need to define a proper action for your intent filter (android.nfc.action.NDEF_DISCOVERED( in your case. In addition, you should be aware that MIME types used in the NDEF_DISCOVERED intent filter must always be all-lower-case. The reason is that MIME types are case-insensitive as per the RFC but Android's intent filter matching is case-sensitive. Consequently, Android will convert MIME types to all-lower-case before matching in order to overcome case-sensitivity issues (see this answer for a more detailed explaination).

As a result, you intent filter would look something like this:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="myapp/firstnfcapp" />
</intent-filter>
查看更多
登录 后发表回答