将安卓App添加到文件打开方式

当在文件管理器里点击某个文件时,会弹出一个打开文件方式的列表,如果需要将自己的App添加到列表中,需要修改App的 Manifest文件。查找了很多资料,写法基本一致,即在Activity中添加一个Intent filter,代码如下:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="file" />
    <data android:host="*"/>
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.abc" />
</intent-filter>

经过实际测试并没有任何作用,但是既然这么多人都是这么写的,那么应该这个代码本身是没问题的,那问题就只有两种可能:其一可能是我自己的代码哪里有问题,其二是现在的版本已经不支持这么写了。到Google搜索了一番,终于看到有人说新版本的Android中已经不使用file类型的路径了,而是使用content开头。于是将代码按如下修改后,期待已久App图标终于出现在打开方式列表中了。 

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="content" />
    <data android:host="*"/>
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.abc" />
</intent-filter>

为了兼容以前的版本,我把这两个Intent filter都写在了Activity中,暂时没发现有什么问题。

在对应的Activity的OnCreate函数中,用getIntent().getData()函数即可获取到传入的文件Uri路径(content://…),不过要注意Activity的启动模式,否则可能会在文件管理器的栈上创建你的Acitivity的实例。另外如果用户已经打开了Activity,则OnCreate函数已经被调用过了,可能会没法获取这个Uri,我的解决方法是创建一个新的Activity用于读取这个Uri路径,如果有更好的办法请指教。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值