0

我制作了一个应用程序,它从保存在 NFC 标签上的链接播放视频。这些视频的链接将以 .3gp 或 .mp4 等结尾,例如http://commonsware.com/misc/test2.3gp

我的清单是这样的

<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 我想将此活动限制为仅在检测到视频链接时打开,否则请转到浏览器打开链接。

4

1 回答 1

1

您应该检查文件扩展名的符号。我猜你宁愿写"android:pathPrefix=*.3pg"

此外,文档还要求提供宿主元素。因此,您可能会尝试在数据元素中添加类似android:host="*"的内容。

文档说:

安卓:路径模式

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

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

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

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

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

请参阅:数据元素的 Android 文档

于 2013-07-09T12:36:19.823 回答