Android11 分享URI失败

    最近收到用户反馈:app分享文件到微信会提示:获取资源失败,分享到QQ提示:文件不存在。造成这个问题主要有两个原因:

    1、file:// 协议不再支持共享,需要用content:// 协议。简单的说就是文件Uri不能直接通过Uri.fromFile(file)获取,而应该通过FileProvider.getUriForFile(context, packageName+".fileprovider", file)获取。关于如何配置FileProvider网上已经一堆文章了,我这边就不再赘述。

    2、由于FileProvider的文件是私有域的,因此其他app想要访问该域的话需要我们的App进行授权

主要是两句代码
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
activity.grantUriPermission(packageName, uri,  Intent.FLAG_GRANT_READ_URI_PERMISSION);

3、如果你使用的Api版本为30即Android11,那么在调用queryIntentActivities获取相关应用的包名时并没有返回相关的包名,别急,这是因为android11又引入了一个包名可见性的概念,详情可以参考一下文章:Android11适配 - 软件包可见性

4、码云Demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容