Android N以上外部打开自定义URI文件的注意事项

背景:最近在做一个下载模块,要求下载完成后可以点击打开文件。涉及到安卓N中需要FileProvider的地方。但苦于一直没法用第三方应用打开下载的文件(比如用WPS打开xlsx这样子),但APK的安装没啥问题,上网苦苦搜索了一番找到了解决方案,特地码住。

参考文章:https://mp.weixin.qq.com/s/0BFFoyJdrzkfk6k66tHtyA?

网上大多数的解决方案都差不多,仅仅介绍了使用FileProvider的方法以及对文件mimeType的判断,但是都没有涉及到给第三方应用授权的问题。

而第三方应用没有获得相应的权限就无法打开这个文件。

代码实现:

int flag = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION;
List resolveInfoList = MyApplication.getContext().getPackageManager()
                .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo info : resolveInfoList) {
    MyApplication.getContext().grantUriPermission(info.activityInfo.packageName,
                    uri, flag);
}

之后再使用该Intent启动activity即可。

你可能感兴趣的:(Android N以上外部打开自定义URI文件的注意事项)