无法在外部存储中创建文件夹,Android
Can't create a folder in external storage, Android
我尝试了很多方法来寻找解决方案,但到目前为止一切都失败了。这可能是愚蠢的事情。
我正在尝试将照片保存为 phone 的 jpeg 格式。一切都失败了,即使是制作文件夹这样简单的任务。下面的代码是我用来创建文件夹的。
private void makeFolder(){
try{
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),getString(R.string.app_name));
boolean success = true;
if (!folder.exists()) {
success = folder.mkdirs();
}
if (success) {
Toast.makeText(this,"Done",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this,"folder_failed",Toast.LENGTH_SHORT).show();
System.out.println(folder.getAbsolutePath());
}
}catch (Exception e){
Toast.makeText(this,"exception",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
我尝试过很多不同的方法,例如:
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + getString(R.string.app_name)+File.separator);
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + getString(R.string.app_name);
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
,getString(R.string.app_name));
我已经尝试了 mkdirs 和 mkdir 并且
-Environment.getExternalStorageDirectory().getAbsolutePath()
-getExternalStorageDirectory().getAbsolutePath()
-Environment.getExternalStorageDirectory()
-getExternalStorageDirectory()
权限存在于清单中并被接受。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
System.out打印的路径是“/storage/emulated/0/appname”
我不知道还能尝试什么。类似的代码适用于其他应用程序。最小 API 是 23。
非常感谢任何帮助。
我建议你尝试 Context.getExternalFilesDir()
而不是 Environment.getExternalStorageDirectory()
如果您的测试设备运行 Android 10/Q 或 API 级别 29+:将数据存储到媒体文件夹时会发生一些权限更改。您可以毫无问题地将数据存储到您的应用程序文件夹,但如果您删除该应用程序,图像也会消失。
最简单的方法是在 application 下的清单中添加 android:requestLegacyExternalStorage="true" ,但这更像是一种解决方法,可能不会长期受支持。
在这里搜索“商店图片 android 10”,您会找到适合您的方法。
我尝试了很多方法来寻找解决方案,但到目前为止一切都失败了。这可能是愚蠢的事情。
我正在尝试将照片保存为 phone 的 jpeg 格式。一切都失败了,即使是制作文件夹这样简单的任务。下面的代码是我用来创建文件夹的。
private void makeFolder(){
try{
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),getString(R.string.app_name));
boolean success = true;
if (!folder.exists()) {
success = folder.mkdirs();
}
if (success) {
Toast.makeText(this,"Done",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this,"folder_failed",Toast.LENGTH_SHORT).show();
System.out.println(folder.getAbsolutePath());
}
}catch (Exception e){
Toast.makeText(this,"exception",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
我尝试过很多不同的方法,例如:
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + getString(R.string.app_name)+File.separator);
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + getString(R.string.app_name);
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
,getString(R.string.app_name));
我已经尝试了 mkdirs 和 mkdir 并且
-Environment.getExternalStorageDirectory().getAbsolutePath()
-getExternalStorageDirectory().getAbsolutePath()
-Environment.getExternalStorageDirectory()
-getExternalStorageDirectory()
权限存在于清单中并被接受。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
System.out打印的路径是“/storage/emulated/0/appname”
我不知道还能尝试什么。类似的代码适用于其他应用程序。最小 API 是 23。 非常感谢任何帮助。
我建议你尝试 Context.getExternalFilesDir()
而不是 Environment.getExternalStorageDirectory()
如果您的测试设备运行 Android 10/Q 或 API 级别 29+:将数据存储到媒体文件夹时会发生一些权限更改。您可以毫无问题地将数据存储到您的应用程序文件夹,但如果您删除该应用程序,图像也会消失。
最简单的方法是在 application 下的清单中添加 android:requestLegacyExternalStorage="true" ,但这更像是一种解决方法,可能不会长期受支持。
在这里搜索“商店图片 android 10”,您会找到适合您的方法。