我想知道是否有可能做到以下几点;
我想要一个与我正在开发的Android应用程序一起使用的nfc标签.
如果我刷标签并且我的应用程序安装在手机上,我想从标签中读取纯文本数据.没有什么比999更多的数字.
但是如果没有安装我的应用程序,我希望标签打开Web浏览器并重定向到可以下载它的链接?
这有可能与android已经开始阅读意图的方式有关吗?
从我对它的理解(我不是在nfc的专业人士)你只能做其中一个?
还是我错了?
编辑:
有没有办法在没有在Play商店加载应用程序的情况下这样做?这是一个大学项目,我不认为如果我公开项目,他们会很高兴.我希望将它们带到一个链接,您可以下载.apk
如果要求避免播放商店,您可以在标签上存储包含两条记录的NDEF消息:第一条记录包含应用下载页面的URL.第二条记录包含纯文本数据.(实际上,您甚至可以将数据编码到URL中,因此只使用一个URI记录.)
+----------------------------------------------+------------------+ | URI Record: http://www.zapnologica.com/myapp | Text Record: nnn | +----------------------------------------------+------------------+
如果未安装您的应用程序,将在用户的Web浏览器中打开应用程序的下载页面(此处:http://www.zapnologica.com/myapp).
为了在代码扫描时自动启动您的应用,您的应用需要为下载网址定义一个意图过滤器:
<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>
Run Code Online (Sandbox Code Playgroud)
然后,在您的应用程序中,您可以从标签中读取整个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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,msg[0].getRecords()将返回两条记录 - URI记录和文本记录.
| 归档时间: |
|
| 查看次数: |
1991 次 |
| 最近记录: |