android 11 录制视频报错open failed: EPERM (Operation not permitted)-权限问题

问题:

  targetSdkVersion 29时保存视频一切正常;
  将targetSdkVersion 29改成30时出现题目错误;

尝试解决:

  原本保存路径:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) .getPath() + File.separator + SAVE_Folder;

  看了资料后修改的路径:ContextCompat.getExternalFilesDirs(mContext,Environment.DIRECTORY_DCIM)[0].getAbsolutePath()+File.separator+SAVE_Folder

解决结果:

  修改之后可以正常录制以及保存视频

新的问题:

  但是保存到该路径下的文件夹并不会显示在本地相册中

分析:

因为外部存储空间ContextCompat.getExternalFilesDirs(数据文件私有,系统媒体文件无法访问(例如存了一个MP3文件,通过系统的文件夹管理系统,无法找到)—这里引自张旭小侠-Android文件各种存储路径的比较-一文)
此时在android 11上已经将视频文件存储在ContextCompat.getExternalFilesDirs()上,此时在手机相册是不可见的,或者可见的是一张系统显示的错误缩略图且不能点开该视频进行播放;
解决方法:
将ContextCompat.getExternalFilesDirs()路径下的文件复制到Environment.getExternalStoragePublicDirectory()路径下~
尾声:以上的解决方法觉得还是有点奇怪,但是小白也不知道怎么去解决了,如果有更好的方式解决,希望多多留言交流!!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值