我制作了一个应用程序,可以播放保存在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 我想将此活动限制为仅在检测到视频链接时打开,否则请转到浏览器打开链接。
答案 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的说明。
仅当为过滤器指定了方案和主机属性时,这些属性才有意义。