簡體   English   中英

Android Application Record與pre-ICS的兼容性

[英]Android Application Record compatibility with pre-ICS

NdefRecord中有一個新方法,可以將AndroidApplicationRecord寫入NdefMessage。 在Ice-Cream-Sandwich之前的版本中這不是必需的,但是從那時起,如果您想處理應用程序中NFC標簽中的特定URI(如intent過濾器中定義的),則除非您定義了它,否則它不會傳遞給您的應用程序該記錄。

createApplicationRecord(String packageName);

這不適用於某種兼容性軟件包(我沒有找到),但是實現非常簡單。

首先添加您希望被任何NFC設備讀取的NdefRecord(請記住URI可以使用URI_PREFIX_MAP進行格式化/縮短)

NdefRecord[] nr = new NdefRecord[2];
nr[0] = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_URI, new byte[0], uriBytes);

在下一個位置添加您的AAR

static final byte[] RTD_ANDROID_APP = "android.com:pkg".getBytes();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    nr[1] = NdefRecord.createApplicationRecord("your.package.name");
else
    nr[1] = new NdefRecord(NdefRecord.TNF_EXTERNAL_TYPE, RTD_ANDROID_APP, new byte[] {}, "your.package.name".getBytes());

您不需要AAR即可處理特定的URI。 AAR只是保證您的應用程序已啟動的另一種方法,而不是另一個可以處理相同URI的應用程序。

AAR在ICS上保證您的應用程序收到NDEF消息。 它也不必是NDEF消息中的第一條記錄(這是與Intent過濾器匹配的內容)。 因此,它與Intent過濾器中的URI或MIME類型匹配完全不同。 但是,AAR對NDEF記錄使用外部類型,這是ICS之前不支持的一種記錄。 因此,如果您希望它與ICS之前的設備一起使用,通常不應將其用作NDEF消息的第一條記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM