2012-01-26 64 views
1

有在NdefRecord一種新方法,它允許寫AndroidApplicationRecord到NdefMessage。這是不是在預冰淇淋,三明治必要的,但此後如果要處理特定URI從一個NFC標籤在應用程序(比如在意向過濾器定義的),它不會被傳遞到您的應用程序,除非你確定那個紀錄。Android應用程序記錄與預ICS兼容性

createApplicationRecord(String packageName); 

這是不具備的某種兼容包(我沒有找到一個),但implementaion是相當簡單的。

首先添加NdefRecord你想成爲可讀的任何NFC設備 (記住,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()); 

回答

1

你並不需要一個AAR處理特定URI。 AAR的是另一種方法,以保證您的應用程序被啓動,而不是另一個應用程序可以處理同一個URI。

0

AAR 保證ICS上的您的應用程序收到NDEF消息。它也不必在NDEF消息的第一條記錄(這是什麼意圖過濾器將進行匹配)。因此它與Intent過濾器中的URI或MIME類型匹配完全不同。 但是,AAR使用外部類型作爲NDEF記錄,這是ICS之前不支持的一種記錄。所以,一般來說,如果你想讓它與ICS預設備工作,你不應該把它作爲你的NDEF消息的第一條記錄。