2012-01-26 6 views
1

NdefRecord에 AndroidApplicationRecord를 NdefMessage에 쓰는 새로운 방법이 있습니다. 이것은 Ice-Cream-Sandwich 이전에는 필요하지 않았지만 애플리케이션의 NFC 태그 (인 텐트 필터에 정의 된 것과 같은)에서 특정 URI를 처리하려는 경우 사용자가 정의하지 않는 한 애플리케이션에 전달되지 않습니다. 그 기록.안드로이드 응용 프로그램 pre-ICS와의 호환성 기록

createApplicationRecord(String packageName); 

일종의 호환성 패키지 (찾을 수 없음)와 함께 사용할 수 없지만 구현이 매우 간단합니다.

먼저 당신이 다음 장소

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을 추가 한 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); 

에 의해 읽을 수 있도록하려는 NdefRecord 추가

특정 URI를 처리하기 위해 AAR이 필요하지 않습니다. AAR은 동일한 URI를 처리 할 수있는 다른 앱 대신 앱이 시작되도록하는 또 다른 방법입니다.

0

AAR 은 앱이 NDEF 메시지를받는 ICS에을 보장합니다. 또한 NDEF 메시지의 첫 번째 레코드 (Intent 필터가 일치되는 대상) 일 필요는 없습니다. 따라서 인 텐트 필터에서 URI 또는 ​​MIME 유형 일치와는 완전히 다릅니다. 그러나 AAR은 ICEF 이전에 지원되지 않는 종류의 레코드 인 NDEF 레코드에 대해 외부 유형을 사용합니다. 따라서 일반적으로 ICS 이전 장치에서 작동하도록하려면 NDEF 메시지의 첫 번째 레코드로 사용하면 안됩니다.