Мое приложение Cordova не запускается после обнаружения тега NFC

Я использую Apache cordova для создания приложений для Android. Я сделал приложение с функцией 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>

и я добавил android:noHistory="true" к элементу activity в файле androidManifest.xml.

Что я хочу :

Если устройство обнаружит какой-либо тег с моим типом mimetype, для запуска приложения также необходимо вызвать этот обратный вызов (означает, что консоль будет печатать). Я использую плагин chariotsolutions/phonegap-nfc.

Вот так, пробовал, не работает. может ли кто-нибудь помочь мне спасибо.


person vasan    schedule 01.11.2014    source источник


Ответы (2)


Чтобы получить намерение NFC вместе со всем сообщением NDEF в вашем приложении, вам необходимо определить правильный фильтр намерений, который соответствует первой записи в приведенном выше сообщении NDEF:

<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>

Узнайте, как обращаться с NFC

person SweetWisher ツ    schedule 02.11.2014

Как писал SweetWisher, вам необходимо определить правильное действие для вашего фильтра намерений (android.nfc.action.NDEF_DISCOVERED( в вашем случае. Кроме того, вы должны знать, что типы MIME, используемые в фильтре намерений NDEF_DISCOVERED, всегда должны быть строчными. Причина в том, что типы MIME нечувствительны к регистру в соответствии с RFC, но сопоставление фильтра намерений Android чувствительно к регистру. Следовательно, Android будет преобразовывать типы MIME в строчные буквы перед сопоставлением, чтобы преодолеть проблемы с чувствительностью к регистру (см. этот ответ для более подробного объяснения).

В результате ваш фильтр намерений будет выглядеть примерно так:

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