【问题标题】:Unable to filter on URL NDEF Android Intent无法过滤 URL NDEF Android Intent
【发布时间】: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。 (他可能勾选了“不要再问”)

谢谢。

编辑:为了完整起见,这里是 NDEF。

【问题讨论】:

    标签: android android-intent nfc intentfilter ndef


    【解决方案1】:

    为了避免弹出,你应该在URI意图中添加pathPrefix属性:

    <data
          android:host="dev.example.com"
          android:scheme="https" 
          android:pathPrefix="/" />
    

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 2015-03-11
      相关资源
      最近更新 更多