【Android】7.0系统解决拍照的问题android.os.FileUriExposedException:file:///storage/emulated/0/

 

 

FileProvider提供了一种解决办法,在Oncreate函数中


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
    StrictMode.setVmPolicy( builder.build() );
    builder.detectFileUriExposure();
}

VM会忽略文件URI曝光。

builder.detectFileUriExposure()
启用文件曝光检查,如果我们没有设置VmPolicy,这也是默认行为。

我遇到一个问题,如果我使用a content:// URI发送东西,一些应用程序是无法理解的。并且不允许降级target SDK版本。在这种情况下,我的解决方案是有用的。

 

看了一下builder.detectFileUriExposure()源码:

不鼓励这种曝光,因为接收应用可能无法访问共享路径。 例如,接收应用可能没有请求{@link android.Manifest.permission#READ_EXTERNAL_STORAGE}运行时权限,或者平台可能跨用户配置文件边界共享{@link android.net.Uri}。 相反,应用程序应使用{@code content://} Uris,以便平台可以扩展接收应用程序访问资源的临时权限。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值