有没有办法以这样的方式构建NdefMessage
:
我将这些工作分开工作但是当我将两个NdefRecord
放入NdefMessage
并将其设置为通过Android Beam推送时,接收器设备会显示具有这两个记录的选择器。您可以点击其中一个,它会转到相应的应用(我的应用或Chrome)。有没有办法绕过这个选择器并让它自动启动第一个支持的链接?
答案 0 :(得分:1)
不,没有。
但是你有两个解决方法:
答案 1 :(得分:0)
如果您不需要使用AndroidApplicationRecords,则只需使用指向移动页面的单个NDEF记录。
例如,如果您的移动页面是http://www.example.com/mypage,您可以将其存储为NDEF消息中的URI记录:
+-----------------------------------------+
| WKT:URI | http://www.example.com/mypage |
+-----------------------------------------+
然后,如果未安装您的应用程序,则会触发移动设备上的Web浏览器。
要获取此记录以启动您的应用,您需要为应用的清单添加正确的意图过滤器:
<activity ...>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"
android:host="www.example.com"
android:pathPrefix="/mypage" />
</intent-filter>
</activity>
如果您想将其他数据传递给您的应用程序,您当然可以添加包含自定义数据的第二条记录( URI记录之后)。在这种情况下,您的NDEF消息可能如下所示:
+-----------------------------------------+
| WKT:URI | http://www.example.com/mypage |
+-----------------------------------------+
| EXT:example.com:mytype | myparameters |
+-----------------------------------------+
| ... |
由于该消息中的第一条记录仍然是您的URI,因此该活动将继续在现有的意图过滤器上触发。在活动中,您可以从意图中检索NDEF消息,并处理第二条记录/其他记录中的参数。