Android7.0以上的分享图片文件错误及解决方法
2023-02-18 16:36:10 时间
原文地址: Android7.0以上的分享图片文件错误及解决方法 - Stars-One的杂货小窝
在Android7.0以上版本,分享图片文件出现了exposed beyond app through ClipData.Item.getUri()
这个报错
原因
实际上,是因为7.0以上版本开启了Uri路径导致的问题,不允许我们使用file://
,只允许使用content://
,我们需要做下FileProvider的适配即可解决此问题,或者将简单粗暴,直接将此验证给关掉
解决方法(关掉uri的验证)
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
builder.detectFileUriExposure();
在application里写上上述代码即可
解决方法(适配FileProvider)
在res中创建xml文件夹(如果文件夹已存在,则跳过此步),创建一个名为myfileprovider.xml
(名字可任取)
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
之后,在AndroidManifest.xml中声明此Provider(下面的代码只需要把authorities和resource里的数值改下即可)
<application>
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="site.starsone.demo.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<!-- ressource file to create -->
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/myfileprovider">
</meta-data>
</provider>
</application>
最后,在构建图片文件的uri的时候,使用下面方法构建(可以顺便加个版本的判断,Android7.0以上就走此方法构建Uri)
Uri imageUri = FileProvider.getUriForFile(
MainActivity.this,
"site.starsone.demo.provider", //(使用你自己的包名+“.provider" )
imageFile);
PS:上面的第三个参数实际上就是在AndroidMainfest里Provider定义的
authorities
属性
参考
相关文章
- 基于Yii2接口的在线答题小程序
- [开源推荐] EasyWeChat开源微信SDK支持公众号 小程序 微信支付 开放平台
- 【今天吃什么】uniApp和微信小程序同款炫酷摇一摇来告诉你!
- 【会说话的小鸟】给你的微信小程序加一个宠物吧!
- 【视频刷刷刷】五分钟带你用uniapp做一个刷抖音的小程序
- java开发的师生评教小程序学生对老师评价老师对班级评价打分题单选题意见框系统选课系统
- java和springboot开发祭祀小程序扫墓系统代祭小程序
- Android平台GB28181设备接入模块摄像头采集方向不对怎么办?
- 小程序wx.showToast真机不显示?
- 如何使用Android可视化埋点
- 如何从零开始集成DTM Android SDK
- 论文解读(DGB)《Self-supervised Graph Representation Learning via Bootstrapping》
- 论文解读(BGRL)《Large-Scale Representation Learning on Graphs via Bootstrapping》
- 浅谈android端的字符串加密
- Android tint颜色渲染
- Android字体渐变效果
- 关于airtest群控制ios
- BootstrapTable 动态显示/隐藏某一行
- Android Studio 中 添加作者 时间 之类的 注释
- 解决android studio 无法更新插件的问题(某些)