В 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());