问题:

  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()路径下~
尾声:以上的解决方法觉得还是有点奇怪,但是小白也不知道怎么去解决了,如果有更好的方式解决,希望多多留言交流!!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐