我正在尝试创建文件。(testipfs文件夹已存在)
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "testipfs");
File photo= new File(imagesFolder, "desktopWallpaper.jpg");
System.out.println("Saving file in "+photo.getAbsolutePath());
if (!photo.exists()) {
try {
photo.createNewFile();
} catch (IOException e) {
System.out.println("Failed to create photo");
e.printStackTrace();
}
}
但得到错误操作不允许。
I/System.out: Saving file in /storage/emulated/0/testipfs/desktopWallpaper.jpg
I/System.out: Failed to create photo
W/System.err: java.io.IOException: Operation not permitted
W/System.err: at java.io.UnixFileSystem.createFileExclusively0(Native Method)
at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
at java.io.File.createNewFile(File.java:1008)
at com.example.ipfs.MainActivity.SavePhotoTask(MainActivity.java:49)
at com.example.ipfs.MainActivity.onCreate(MainActivity.java:112)
我已在清单文件中添加权限,如下所示
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
我该如何解决这个问题?
5条答案
按热度按时间3phpmpom1#
我希望你在Android 11中测试你的应用程序,在Android 11中的事情发生了变化...你必须请求此权限
在您的主活动中
基本上,这只是一个意图,将用户设置给予我们的权限,这是必要的Android 11,如果你只是要求读写权限,那么你的应用程序只是一个只读访问设备中的文件
jecbmhm32#
如果您使用的是Android 10或更高版本,请尝试在Manifest.xml文件中添加
requestLegacyExternalStorage
。xa9qqrwz3#
用这个
ncgqoxb04#
如果您使用的是Android Marshmallow及更高版本,在Manifest文件中声明权限是不够的,在写入或读取任何外部文件之前,您需要显式请求适当的权限。
storage-permission-error-in-marshmallow
Documentation
targetSdkVersion
设置为28或更小。vptzau2j5#
我的目录名中有特殊字符(特别是“:“)。删除此字符允许我保存文件