Запись AAR в NFC: где полезная нагрузка?


Согласно этому ответу и подтвержденному тестированием, когда вы используете Android Beam для передачи сообщения NFC, содержащего запись AAR, принимающее устройство запустит MAIN/LAUNCHER активность для приложения, указанного в AAR.

Что MAIN/LAUNCHER Intent не содержит NfcAdapter.EXTRA_NDEF_MESSAGES экстра. Следовательно, данные, которые мы прошли через все трудности, чтобы передать, по-видимому, теряются, если вы используете AAR.

Есть ли способ получить сообщения NFC, которые вызвали приложение, чтобы быть началось по такому сценарию?

И если ответ "нет", то каков случай использования AAR? Я могу видеть, где это может быть полезно, когда желаемое приложение не существует на принимающем устройстве (вызывает Play Store), но затем, как только приложение установлено, AAR пресекает любую попытку доставить данные с одного устройства на другое, что является своего рода точкой за NFC.

Спасибо!

2 8

2 ответа:

Рискуя ответить на мой собственный вопрос, один рецепт для того, чтобы это сработало (по-видимому):

  • Пусть отправитель Луча использует сообщение NFC с двумя записями NFC, первая из которых содержит что-то для уникального типа MIME, а вторая-AAR

  • У получателя луча есть <intent-filter> на активность, которая отвечает на первую запись NFC, например, через:

        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    
            <category android:name="android.intent.category.DEFAULT"/>
    
            <data android:mimeType="application/vnd.commonsware.webbeam"/>
        </intent-filter>
    

Если приложение уже существует, то NDEF_DISCOVERED Intent будут использованы, и получатель может забрать сообщение NFC и извлечь данные из исходной записи. Если приложение не существует, AAR включится, вызывая Play Store (независимо от того, распространяется ли ваше приложение через Play Store или нет).

Это рецепт, показанныйв примере Android Beam на сайте разработчика .

Судя по документам, use-case гарантирует, что ваше приложение запускается из события NFC. Второй вариант использования будет в основном обеспечивать способ для телефона узнать, какое приложение ему нужно, чтобы прочитать тег.

Пара вопросов Если вы используете две записи: первая нормальная, вторая AAR, как запускается действие? Я ожидал бы, что вы начнете через тег dispatch intent. Содержит ли намерение AAR что-нибудь, что дает вам метку? Я думаю, что вы могли бы manua