自定义文件关联

自定义文件关联指的是打开一个你自己创建的文件,例如后缀是(.abc)。
首先我先介绍下常见文件关联,例如.txt、.jpg。
在Android中,任何文件类型或者MIME类型的关联性打开,是通过广播Intent来实现的。例如,你如果想要注册自己为.txt类型的查看器或者图片查看器,必须为你的Activity加入intent-filter来获取到一个来源所发出的Intent Broadcasting(广播),从而达到关联的目的。

首先我们来看一下data属性里的值
<intent-filter . . . >
<data
android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string"/>
</intent-filter>
我们可以通过URL启动相应data属性描述的Activity。
URL:
scheme://host:port/path or pathPrefix or pathPattern
属性:
android:host
URL的主机部分
android:mimeType
MIME 媒体类型,例如image/jpeg或者text/xml。

一个合法的File Manager(文件管理器)在执行Open动作时,应该是发出一个intent.ACTION_VIEW。所以你的intent-filter应该是这样子的:
<activity android:name=".Demo1Activity" >
<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="file" />
<data android:mimeType="*/*" />
<data android:host="*" />
<data android:pathPattern=".*.txt" />
</intent-filter>
</activity>
<activity android:name=".Demo2Activity" >
<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="content" />
<data android:host="*" />
<data android:pathPattern=".*.txt" />
</intent-filter>
</activity>

在这里,你必须同时申明android:scheme, android:host, android:pathPattern, 方可令pathPattern正确生效。第一个文件关联指的是可以匹配file://mnt/sdcard/12345.txt这样的请求,启动Demo1Activity,第二个文件关联指的是可以匹配content://com.android.test/sdcard/123.txt 这样的请求,在文件管理器中点击这类的txt,可以启动Demo2Activity。如果你有需要,你可以加入android:mimeType来限定文件类型。例如你想打开jpg文件时启动你的activity,这是可以在<intent-filter></intent-filter>里添加<data android:mimeType="image/jpeg" />,具体的mimeType有哪些,你可以上网找,这里我就不一一列举了。

最后我们回到正题,怎么关联自定义文件,我想看到这里大家应该也有思路的,就是修改pathPattern=".*.abc",注意,由于这里打开的是文件,所以android:scheme="file"。这样就可以打开后缀是.adc文件,启动相应的activity。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值