2014-11-20 89 views
1

我開發了一個應用程序,它使用NFC功能並獲得了此TAG用於我的測試。用我的應用程序使用NFC檢測問題標籤

a busy cat http://nsae02.casimages.net/img/2014/11/20/mini_141120054648901134.png

及其特點

a busy cat http://nsae02.casimages.net/img/2014/11/20/mini_141120054925844663.png

一切都非常好..

,並在配置中添加以下行

<uses-feature android:name="android.hardware.nfc" android:required="false" /> 
      <intent-filter> 
     <action android:name="android.nfc.action.TAG_DISCOVERED"/> 
      <action android:name="android.nfc.action.NDEF_DISCOVERED"/> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

添加我的代碼,這樣, WH en它檢測到nfc並選擇我的應用程序

獲取UID ..並使其正確。 (然後找出是否可以獲得文本等不同的字段。) 好。它的工作原理沒事..

my app blue http://nsae02.casimages.net/img/2014/11/19/mini_141119082121303903.png

我的問題是那麼 這同樣的編輯它使用NFC TAG標籤書寫應用

a busy cat http://nsae02.casimages.net/img/2014/11/20/mini_141120055409818122.png

a busy cat http://nsae02.casimages.net/img/2014/11/20/mini_141120055615627271.png

而且我把文本和我回去使用我的應用程序,但不再出現在列表中。

Not my app http://nsae02.casimages.net/img/2014/11/19/mini_141119081714874308.png

給予許多轉彎,並能在我的應用程序列表格式的NFC標籤

我在做什麼錯誤的再次出現? 如果我沒有提供足夠的信息,請問我。 非常感謝您

回答

2

您需要設置適合您的標籤類型的意圖過濾器。您當前使用

  • 的NDEF_DISCOVERED意圖過濾器不會在大多數設備上觸發,因爲它沒有指定數據類型,以及
  • 一個TAG_DISCOVERED意圖過濾器一個,就是爲時才使用回退在AndroidManifest.xml中。

因此,您遇到的是後退行爲:儘管您的代碼不包含NDEF記錄,但它將與後退相匹配。只要向它寫入文本記錄,它就會匹配爲文本NDEF記錄註冊的所有應用程序,因此不會再觸發後退。

所以,如果你想用文字記錄在你的標籤,你可以添加以下意圖過濾器爲您的活動:

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

注意,它通常是一個壞主意,用文字記錄。首先,它們僅適用於人類可讀的數據,其次,許多應用程序註冊了它們,這使得用戶難以在活動選擇器對話框中選擇正確的應用程序。

這仍然不能滿足您的標籤不包含任何數據(目前由回退過濾器處理)的情況。在這種情況下,你應該使用TECH_DISCOVERED意圖過濾器的NfcV標籤技術:

<intent-filter> 
    <action android:name="android.nfc.action.TECH_DISCOVERED" /> 
</intent-filter> 
<meta-data android:name="android.nfc.action.TECH_DISCOVERED" 
      android:resource="@xml/filter_nfc" /> 

而在你的RES/XML的文件夾,你需要創建一個名爲filter_nfc.xml文件與此內容:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
    <tech-list> 
     <tech>android.nfc.tech.NfcV</tech> 
    </tech-list> 
</resources> 

或者當你想爲多個不同的標籤技術進行註冊:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
    <tech-list> 
     <tech>android.nfc.tech.NfcV</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcA</tech> 
    </tech-list> 
</resources> 
+0

非常感謝你!你非常清楚的解釋。 告訴我也把filter_nfc NFCB,NFCF,NFCA必要? 當我花我的完美應用程序檢測nfc。但現在有效,如果我的應用程序不是ejecutandoce現在向我發送一條錯誤消息APP HAS STOPPED – 2014-11-21 15:41:09

+0

對於您在上面的問題中顯示的特定標記,在tech-filter文件中有足夠的NfcV。儘管如此,我不確定你想要評論的第二部分。 – 2014-11-21 15:52:01

+0

當我使用nfc並檢測到我的應用程序時,有兩個選項。 如果我的應用程序正在運行,它可以正常工作 如果我的應用程序沒有運行消息已發送APP已停止 – 2014-11-21 15:56:27