用于http://数据的NFC意图过滤器

时间:2013-07-09 07:28:54

标签: android nfc

我制作了一个应用程序,可以播放保存在NFC标签上的链接中的视频。这些视频的链接将像。{3}}一样以.3gp或.mp4等结尾。

我的清单就像这样

<activity
            android:name="com.example.nfcv1.VedioView"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http" 
                        android:pathPrefix="/.3gp"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIDEOVIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity> 

但问题是此活动是从任何类型的链接开始的,例如www.google.com 我想将此活动限制为仅在检测到视频链接时打开,否则请转到浏览器打开链接。

1 个答案:

答案 0 :(得分:1)

您应该检查文件扩展名的表示法。我想你宁愿写“android:pathPrefix = *。3pg”

此外,文档还会请求主机元素。因此,您可能会尝试在数据元素中添加类似 android:host =“*”的内容。

文档说:

  

机器人:pathPattern

     

URI的路径部分。 path属性指定与Intent对象中的完整路径匹配的完整路径。 pathPrefix属性指定仅与Intent对象中路径的初始部分匹配的部分路径。 pathPattern属性指定与Intent对象中的完整路径匹配的完整路径,但它可以包含以下通配符:

     

星号('*')匹配前一个字符的0到多次出现的序列。后跟星号(“。*”)的句点匹配任意0到多的序列字符。

     

因为当从XML读取字符串(在将其解析为模式之前)时,'\'被用作转义字符,所以您需要双重转义:例如,文字'*'将被写为“\\ *”和文字'\'将写成“\\\\”。这与在Java代码中构造字符串时需要编写的内容基本相同。

     

有关这三种模式的更多信息,请参阅PatternMatcher类中的PATTERN_LITERAL,PATTERN_PREFIX和PATTERN_SIMPLE_GLOB的说明。

     

仅当为过滤器指定了方案和主机属性时,这些属性才有意义。

请参阅:Android documentation for the data element