【发布时间】:2018-03-05 16:24:21
【问题描述】:
在 SE 上有很多关于如何做到这一点的示例,但我似乎无法让它发挥作用。我想要做的是当扫描带有 dev.example.com 的标签时,我的应用程序已启动,如果已安装,或者如果未安装,只需转到标签中的 URL。无论应用程序是否正在运行,这都应该发生。
在清单中:
<activity android:name=".MainActivity">
<intent-filter android:label="@string/app_name">
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="dev.example.com"
android:scheme="https" />
</intent-filter>
我有一个带有https://dev.example.com 的 NFC 标签写入第一条 NDEF 记录。
不管我做什么,如果我用我的 S7 扫描它,它就会弹出
NFC 请求
您被要求打开一个网址标签 (https://dev.example.com)
[]不要再问我关于nfc的事情了
取消确定
(我从不点击“不要再问我”) 单击“确定”启动默认浏览器。
如果我将清单更改为过滤明文 NDEF..
<intent-filter android:label="@string/app_name">
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
我写了一个文本 NDEF 记录,我的应用启动了。
那么为什么 URL 不起作用?
我也试过添加
android:pathPrefix="/app"
到 url 意图并将 https://dev.example.com/app 写入标签。我的应用程序仍然没有拦截任何 URL NDEF 记录。
我也有一个
protected void onNewIntent(Intent intent) {}
在我的主要活动中,但它永远不会被调用,即使文本 NDEF 启动应用程序也是如此。但一次一个问题..
我真的没有其他手机可以试用。我在另一个 S7 上尝试过,无论是否安装了应用程序,它都会启动 URL。 (他可能勾选了“不要再问”)
谢谢。
【问题讨论】:
标签: android android-intent nfc intentfilter ndef