【发布时间】:2019-01-07 11:25:41
【问题描述】:
首先,我正在使用我的 Google Pixel XL(第一代 32 GB 版本,运行 Android 9 API Level 28)测试此应用
基本上,我正在尝试基于Android Camera 2 API 制作一个相机应用程序(我刚刚从https://github.com/googlesamples/android-Camera2Basic下载了示例代码)。我被卡住了,因为我试图将相机拍摄的照片保存到“/storage/emulated/0/”内的“图片”文件夹中。
但是,由于某种原因,即使我似乎能够做到这一点,但当我使用 ES 文件资源管理器检查它们时,文件夹和图片文件并不存在。
到目前为止,我已经尝试了 3 种方法:
尝试 #1:
mFile = new File(getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "newPicture.jpg");
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
mFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "picture.jpg");
mFile.mkdirs();
}
尝试 #2:
File filePath = new File(Environment.getExternalStorageDirectory().getPath(),"randomFolder");
if(!filePath.exists()){
filePath.mkdirs();
}
String fullPathName = filePath.getAbsolutePath() + "/" + "newPicture.jpg";
mFile = new File(fullPathName);
尝试 #3:
mFile = new File(fullPathName);
File filePath = new File(Environment.getExternalStorageDirectory() + "/Pictures/");
if (!filePath.exists()){
filePath.mkdirs();
}
mFile = new File(filePath,"newPicture.jpg");
mFile是保存“newPicture”的文件路径,基本上应该保存到“/storage/emulated/0/Pictures/newPicture.jpg”
现在,我尝试使用 getExternalFilesDir() 方法,以便将图片保存到 /storage/emulated/0/Android/data/com.***.***[the package name]/files/Pictures/newPicture.jpg",在这种情况下,它完全可以工作!但是我真的想将图片保存到 /storage/emulated/0 目录,因为我希望用户以后能够轻松访问数据。
为了更好地说明这一点,我记录了正在运行的应用程序,然后拍了一张照片并保存为 gif,并在此处将其上传到 imgur: https://imgur.com/Szpc1HR
看到了吗?图片似乎成功保存到“/storage/emulated/0/Pictures/newPicture.jpg”但是当我去ES文件资源管理器检查图片时,没有创建文件夹“图片”,nada。
我真的在我的智慧结束了哈哈,有人知道这个问题的解决方案吗?任何建议将不胜感激
附:差点忘了说,我已经在AndroidManifest.xml添加了权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
【问题讨论】:
-
AndroidManifest 文件中是否允许外部存储?:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> -
@guy 嗨,伙计,感谢您的回复 :) 我做到了,是的,我忘了在帖子中说,我现在就编辑它。
标签: android camera storage external