2014-11-01 3 views
2

Я использую Apache cordova для создания приложений для Android. Я сделал заявку с функцией NFC.Приложение моей кордовой программы не запускается после обнаружения тега NFC

Мы уже записали данные в тег NFC, с mimetype: myApp/firstNFCApp. Внутри моего приложения при обнаружении тега с этим mimetype мое приложение будет считывать данные и показывать эти данные в удобной для пользователя форме. Таким образом, я осуществил, он работает fine.This был код, который я написал для выборки данных из тега

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 плагина.

Это способ, я пробовал, что он не работает. кто может мне помочь, спасибо.

ответ

1

Для того, чтобы получить в NFC намерение вместе со всем сообщением ЦНК в вашем приложении, вам нужно будет определить правильный фильтр намерений, что соответствует первой записи в приведенном выше сообщении ЦНК:

<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

0

Как писал SweetWisher, вам необходимо определить правильное действие для вашего фильтра намерений (android.nfc.action.NDEF_DISCOVERED (в вашем случае). Кроме того, вы должны знать, что типы MIME, используемые в целевом фильтре NDEF_DISCOVERED, всегда должны быть в любом случае. Причина в том, что типы MIME нечувствительны к регистру в соответствии с RFC, но Совместимость фильтра намерений Android зависит от регистра. Следовательно, 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> 

 Смежные вопросы

  • Нет связанных вопросов^_^