2011-09-20 91 views
1

我想玩我的新的android設備和nfc標籤,我已經寫了一個非常簡單的應用程序來檢測nfc標籤。但是我試過了,當標籤被掃描時,我無法讓我的設備開始我的活動。這裏是我有:nfc intent dispatch問題

最簡單的活動:

public class NFCIntentDispatch extends Activity{ 
    private TextView mText; 

    public void onCreate(Bundle savedState) { 
     super.onCreate(savedState); 
     setContentView(R.layout.intent_dispatch); 
     mText = (TextView) findViewById(R.id.text); 
    } 
} 

和menifest.xml

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

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

下RES/XML的nfc_tech_filter.xml:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
<tech-list> 
    <tech>android.nfc.tech.IsoDep</tech> 
    <tech>android.nfc.tech.NfcA</tech>   
    <tech>android.nfc.tech.NfcB</tech> 
    <tech>android.nfc.tech.NfcF</tech> 
    <tech>android.nfc.tech.NfcV</tech> 
    <tech>android.nfc.tech.Ndef</tech> 
    <tech>android.nfc.tech.NdefFormatable</tech> 
    <tech>android.nfc.tech.MifareClassic</tech> 
    <tech>android.nfc.tech.MifareUltralight</tech> 
</tech-list> 

問題:

無論何時標籤被掃描,我的設備(Nexus S 2.3.3)只會啓動名爲「收集新標籤」的活動構建,但從不顯示選擇也不開始我的活動。任何想法爲什麼會發生,感謝任何幫助。

+1

您所使用的技術列表尋找那些支持你只列出的格式的標籤。單獨列出它們,如下所示,查找第一個標籤或下一個標籤或下一個標籤OR ...等等。以上是AND列表。您可以使標籤組更好地識別您的應用程序支持的標籤。 –

回答

4

在Android文檔中有關於技術列表的錯誤,這讓我花了很長時間才弄清楚了。 你必須爲了打開一個列表的每個項目,像這樣得到它的工作:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <tech-list> 
     <tech>android.nfc.tech.IsoDep</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcA</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcB</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcF</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcV</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.Ndef</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NdefFormatable</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.MifareClassic</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.MifareUltralight</tech> 
    </tech-list> 
</resources> 
+0

嗨,感謝您的回覆,我剛剛更改了技術列表。但它似乎沒有幫助。但無論技術發現是否有效,它應該仍然有效,而我有標籤發現過濾器? – bingjie2680

+0

您可以查看我創建的[nfc-puzzle app](http://dev.c-base.org/nfc-puzzle/nfc-puzzle/trees/master/NFCPuzzle),以便在柏林使用NFC for droidcon。 – keyboardsurfer

+0

我終於可以通過技術發現來使用你的方法。但遺憾的是標籤發現仍然不起作用,我無法弄清楚爲什麼。無論如何,感謝您的幫助。 – bingjie2680