Android NDEF 意图过滤器,包含 http 方案和主机的数据

发布于 2024-11-03 20:16:14 字数 740 浏览 1 评论 0原文

我正在尝试定义一个 Intent 过滤器,该过滤器仅在收到包含特定网站的 URI 的 NDEF 消息时才会触发。

我将其定义如下:

        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" />
            <data android:host="ta.bcntouch.com" />
        </intent-filter>

但它不会那样触发。我也尝试过:

            <data android:scheme="http"android:host="ta.bcntouch.com" />

没有运气。也只有默认值。移除该元素将导致其触发。

这可以做到吗? Android 文档仅显示在元素中使用 MIME 类型的示例......

感谢任何帮助。

I am trying to define an Intent filter that will only trigger when I receive NDEF messages that contain the URI of a particular web site.

I have it defined like this:

        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" />
            <data android:host="ta.bcntouch.com" />
        </intent-filter>

But it won't trigger like that. I have also tried:

            <data android:scheme="http"android:host="ta.bcntouch.com" />

With no luck. Also with just DEFAULT. Removing the element will cause it to trigger.

Can this be done? The Android documentation only shows examples using MIME type in the element.....

Any help appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

岁月静好 2024-11-10 20:16:14

这是我最终使用的过滤器,用于捕获许多特定的已知 URL 组合。

主机字段开头的“*”允许我在使用子域中的测试服务器进行测试时使用相同的过滤器,或者遵循相同的名称格式。

第二个(视图)从网页、电子邮件等捕获相同的 URL 格式...:

        <intent-filter>
          <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
          <category android:name="android.intent.category.DEFAULT"/>
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/p/.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/l/.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/a.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/t.*" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/p/.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/l/.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/a.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/t/.*" />
        </intent-filter>

Here is the filters I finally used, to capture a number of specific known URL combinations.

The '*' at the start of the host field allows me to use the same filter when testing with test servers that are in a sub-domain, or follow the same format for name.

The second (View) one captures the same URL formats from web-pages, emails, etc...:

        <intent-filter>
          <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
          <category android:name="android.intent.category.DEFAULT"/>
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/p/.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/l/.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/a.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/t.*" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/p/.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/l/.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/a.*" />
            <data android:scheme="http"
                  android:host="*ta.bcntouch.com" 
                  android:pathPattern="/t/.*" />
        </intent-filter>
强辩 2024-11-10 20:16:14

这种格式适合我

<data android:scheme="http" android:host="www.domain.com" android:pathPattern=".*" />

This format works for me

<data android:scheme="http" android:host="www.domain.com" android:pathPattern=".*" />
后来的我们 2024-11-10 20:16:14

我做过类似的事情,但我认为你不能使用 uri。您需要编写一条 MIME ndef 消息,并使用意图过滤器将自定义 mime 类型(如 x-myapp/mydemo)分配给您的活动。然后,您可以读取任何内容(例如 URL),并触发 Web 浏览器等。

I have done something similar, but I think you cannot use the uri. You need to write a MIME ndef message and assign the custom mime type like x-myapp/mydemo to your activity using the intent filter. you can then read any content, like a URL for example, and trigger a web browser for example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文