Совместимость записи приложения Android с пре-ICS - PullRequest
1 голос
/ 26 января 2012

В NdefRecord появился новый метод, который позволяет записывать AndroidApplicationRecord в NdefMessage.Это не было необходимо в pre Ice-Cream-Sandwich, но с тех пор, если вы хотите обрабатывать определенный URI из тега NFC в вашем приложении (как определено в intent-filter), он не будет доставлен в ваше приложение, если вы не определитеэта запись.

createApplicationRecord(String packageName);

Это недоступно с каким-либо пакетом совместимости (я его не нашел), но реализация довольно проста.

Сначала добавьте нужный вам 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());

Ответы [ 2 ]

1 голос
/ 26 января 2012

Вам не нужен AAR для обработки определенного URI.AAR - это просто еще один метод, который гарантирует, что ваше приложение запускается вместо другого приложения, которое может обрабатывать тот же URI.

0 голосов
/ 11 февраля 2012

AAR гарантирует на ICS, что ваше приложение получает сообщение NDEF.Это также не обязательно должна быть первая запись в сообщении NDEF (с чем будет сопоставлен фильтр Intent).Так что он сильно отличается от сопоставления типов URI или MIME в фильтре Intent.Однако AAR использует внешний тип для записи NDEF, которая является разновидностью записи, которая не поддерживается до ICS.Поэтому обычно вы не должны использовать его как первую запись вашего сообщения NDEF, если хотите, чтобы оно работало с устройствами, предшествующими ICS.

...