根據RFC,MIME類型不區分大小寫。但是,Android的意圖過濾器matiching區分大小寫。爲了克服這個問題,您應該只使用小寫MIME類型總是。
具體來說,使用Android NFC API的MIME類型記錄幫助程序方法,MIME類型將自動轉換爲小寫字母。因此,使用混合大小寫的類型名稱調用方法NdefRecord.createMime()
將始終導致只創建一個小寫的MIME類型名稱。例如。
NdefRecord r1 = NdefRecord.createMime("text/ThisIsMyMIMEType", ...);
NdefRecord r2 = NdefRecord.createMime("text/tHISiSmYmimetYPE", ...);
NdefRecord r3 = NdefRecord.createMime("text/THISISMYMIMETYPE", ...);
NdefRecord r4 = NdefRecord.createMime("text/thisismymimetype", ...);
將所有結果到創建相同的MIME類型記錄類型:
+----------------------------------------------------------+
| MIME:text/thisismymimetype | ... |
+----------------------------------------------------------+
所以你的意圖過濾器將也需要全小寫字母:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/thisismymimetype" />
</intent-filter>