背景:最近在做一个下载模块,要求下载完成后可以点击打开文件。涉及到安卓N中需要FileProvider的地方。但苦于一直没法用第三方应用打开下载的文件(比如用WPS打开xlsx这样子),但APK的安装没啥问题,上网苦苦搜索了一番找到了解决方案,特地码住。
网上大多数的解决方案都差不多,仅仅介绍了使用FileProvider的方法以及对文件mimeType的判断,但是都没有涉及到给第三方应用授权的问题。
而第三方应用没有获得相应的权限就无法打开这个文件。
代码实现:
int flag = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION;
List<ResolveInfo> resolveInfoList = MyApplication.getContext().getPackageManager()
.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo info : resolveInfoList) {
MyApplication.getContext().grantUriPermission(info.activityInfo.packageName,
uri, flag);
}
之后再使用该Intent启动activity即可。
网友评论