gpt4 book ai didi

android - 一个 NFC 标签上的两个 Action

转载 作者:行者123 更新时间:2023-11-29 14:50:37 26 4
gpt4 key购买 nike

我想知道是否可以执行以下操作;

我想要一个与我正在开发的 Android 应用程序结合使用的 nfc 标签。

如果我刷标签并且我的应用程序安装在手机上,我想从标签中读取纯文本数据。没有什么特别的,只是一个高达 999 的数字。

但如果我的应用程序未安装,我希望标签打开 Web 浏览器并重定向到他们可以下载该应用程序的链接?

Android 读取 Intent 的方式是否可能?

根据我的理解(我不是 nfc 专家)你只能做其中之一吗?

还是我错了?

编辑:

有什么办法可以不在 Play 商店上加载应用程序吗?这是一个大学项目,如果我公开该项目,我认为他们不会高兴。我希望将他们带到一个链接,您可以在其中下载 .apk

最佳答案

如果需要避免使用 Play 商店,您可以在标签上存储包含两条记录的 NDEF 消息:第一条记录包含应用下载页面的 URL。第二条记录包含纯文本数据。 (事实上​​,您甚至可以将数据编码到 URL 中,因此只使用一个 URI 记录。)

+----------------------------------------------+------------------+| URI Record: http://www.zapnologica.com/myapp | Text Record: nnn |+----------------------------------------------+------------------+

If your application is not installed, the app's download page (here: http://www.zapnologica.com/myapp) will be opened in the user's web browser.

In order to automatically launch your app upon tag scanning, your app needs to define an intent filter for the download 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 消息将以额外的 Intent 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 - 一个 NFC 标签上的两个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19402435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com