Два действия над одним тегом NFC
Я хочу знать, возможно ли сделать следующее;
Я хочу иметь тег nfc, который работает в сочетании с разрабатываемым Android-приложением.
Если я проведу пальцем по тегу, и мое приложение будет установлено на телефоне, я захочу прочитать текстовые данные из тега. Ничего особенного, только число до 999.
Но если мое приложение не установлено, я хочу, чтобы тэг открывал веб-браузер и перенаправлял на ссылку, где они могут скачать это?
Возможно ли это с тем, как андроид пошел о чтении намерений?
из моего понимания (я не профессионал в NFC) вы можете сделать только один из них?
Или я не прав?
Редактировать:
Есть ли способ сделать это без загрузки приложения в магазине Play? Это для университетского проекта, и я не думаю, что они будут счастливы, если я сделаю проект общедоступным. я надеялся просто взять их по ссылке, где вы можете скачать.apk
2 ответа
Если необходимо избегать Play Store, вы можете сохранить в теге сообщение NDEF, содержащее две записи: первая запись содержит URL-адрес страницы загрузки вашего приложения. Вторая запись содержит данные в виде простого текста. (На самом деле, вы можете даже закодировать данные в URL и, следовательно, использовать только одну запись URI.)
+ ---------------------------------------------- + - ---------------- + | Запись URI: http://www.zapnologica.com/myapp | Текстовая запись: nnn | +----------------------------------------------+----------------- +
Если ваше приложение не установлено, в веб-браузере пользователя откроется страница загрузки приложения (здесь: http://www.zapnologica.com/myapp).
Чтобы автоматически запускать приложение после сканирования тегов, оно должно определить фильтр намерений для URL-адреса загрузки:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"
android:host="www.zapnologica.com"
android:pathPrefix="/myapp" />
</intent-filter>
Затем в вашем приложении вы можете прочитать все сообщение NDEF из тега (фактически сообщение NDEF будет предоставлено вашему приложению с дополнительной целью). EXTRA_NDEF_MESSAGES
автоматически):
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
Parcelable[] rawMsgs = Intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
}
}
Таким образом, msg[0].getRecords()
вернет две записи - запись URI и текстовую запись.
Я думаю, что это то, что вы ищете:
Если пользователь без нашего приложения прикоснется к тегу, он будет использовать встроенный механизм, чтобы перенести его на страницу загрузки приложения в Android Play Store. После установки любых последующих нажатий запустит приложение и покажет игровую карту на экране.