拍的照片无法存储到外部存储的共有文件夹中,怎么办?

拍的照片无法存储到外部存储的共有文件夹中,怎么办?

下面代码,无法将拍的照片存储到共有文件夹中,编译时提示“Result of 'File.createNewFile()' is ignored,运行时提示“permission denied”,请问如何解决?

String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/ADC/";
File file = new File(path + picName + "_0.jpg");
try {
   if (!Objects.requireNonNull(file.getParentFile()).exists()){
       file.getParentFile().mkdir();
   }
   if (!file.exists()){
       file.createNewFile();
   }
   BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
   croppedBmp_0.compress(Bitmap.CompressFormat.JPEG, 100, bos);
   bos.flush();
   bos.close();
} catch (IOException e) {
   e.printStackTrace();
}

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

1)SD卡的读写权限加了没有? 2)请继续学习3-5动态权限的申请。祝:学习愉快

  • 慕村4340802 提问者 #1
    老师刚说的静态和动态权限都加上了,还是不行。 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" /> // 动态申请外部存储的读写权限 int permission = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this,new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},1); }
    2020-06-02 18:58:47
  • 好帮手慕雪 回复 提问者 慕村4340802 #2
    你是29及以上的版本吧?把getExternalStorageDirectory()改为 getExternalFilesDir()再试试。getExternalFilesDir()是私有目录,会随APP的删除而删除的。
    2020-06-02 19:12:51
  • 慕村4340802 提问者 回复 好帮手慕雪 #3
    getExternalFilesDir()确实可以,但我想永久保存数据的,不能随APP的卸载而清除,为什么别的APP就可能实现呢?
    2020-06-04 12:53:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.Android 网络操作与流行框架
  • 参与学习           人
  • 提交作业       220    份
  • 解答问题       1800    个

本阶段是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理;从文件存储、到轻量级数据库SQLite的使用;最后利用最流程的第三方框架助你快速开发企业级APP。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师