2012-07-10 5 views
2

빈 NFC 태그에 사용할 Intent 필터를 일치시키는 데 문제가 있습니다. NDEF 데이터로 태그를 감지 할 수 있습니다. 하지만 빈 NFC 태그를 탭하면 아무 일도 일어나지 않습니다.어떤 인 텐트 유형이 빈 NFC 태그에 포함됩니까?

는 아래에서 필터 부분입니다 내 AndroidManifest.xml

<intent-filter> 
    <action android:name="android.nfc.action.NDEF_DISCOVERED"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.nfc.action.TECH_DISCOVERED"/> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.nfc.action.TAG_DISCOVERED"/> 
</intent-filter> 
<meta-data android:name="android.nfc.action.TECH_DISCOVERED" 
    android:resource="@xml/nfc_tech_filter" /> 
+0

흠 ... 당신의'TECH_DISCOVERED'와'TAG_DISCOVERED'가 그것을 덮고 있어야합니다. Leastways, NFCTagInfo가 사용하는 것입니다. 그리고 나는 그들이 포맷되지 않은 태그를 감지한다는 것을 기억합니다. (나는 당신의 "empty"에 대한 정의라고 생각합니다). – CommonsWare

+0

예, 현재 포맷되지 않은 태그 또는 "빈"태그를 감지하는 방법을 찾고 있습니다. 쓰기 메소드에서 태그를 처리 할 것이기 때문입니다. – Ron

답변

4

나는 내 NFC 기술 필터 목록에서 다음을 수행 것을 발견 : 그들은 논리적 AND로 평가되기 때문에

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

내 태그 중 하나를 일치하지 않았다. 내 NFC 태그에 맞게 내 응용 프로그램을 얻으려면 그냥 그렇게처럼 내 태그를 특정 태그 기술 목록을 만들어 :

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

(NfcA AND Ndef AND MifareUltralight) OR NfcA OR Ndef OR MifareUltralight으로 태그를 일치합니다. 희망이 현재이 문제가 붙어있어 누구든지 도움이되기를 바랍니다.

+3

NfcA (MifareUltralight 포함) 및 Ndef 용 기술 목록만으로이 작업을 단순화 할 수 있습니다. –

+1

고맙습니다. 2 분 안에 작동하게하십시오. 내가 너를 낭비했을 때 너는 어땠 니? – mharper

3

당신은 TECH_DISOVERED (및 TAG_DISCOVERED) 필터에 <category android:name="android.intent.category.DEFAULT"/>을 추가해야합니다. 그렇지 않으면 일치하지 않습니다.

+0

예, 감사합니다. 그러나 이것의 배후에 진정한 문제가 있음을 발견했습니다. '기술 목록'에 AND 로직이 있다는 것을 알게되었습니다. – Ron