自定义文件关联

自定义文件关联指的是打开一个你自己创建的文件,例如后缀是(.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。



你可能感兴趣的:(自定义文件关联)