Android Mkdir Eacces权限被拒绝
我需要有关Android Mkdir Eacces权限被拒绝,android,android-file,Android,Android File,我需要有关mkdir失败的帮助:EACCES(权限被拒绝) 我的构建设置; MinSDK版本15-TargetSDK版本19-编译DK版本25- buildToolsVersion“25.0.0” 我使用Android Studio 2.3 调试设备:三星J1(SM-J200F)安卓5.1.1安卓安全补丁级别2016-12-01 及 索尼Xperia Z5(E6603)安卓7.0安卓安全补丁级别2016-12-01 但Google Play APK版本正在运行 安卓清单 <uses
mkdir失败的帮助:EACCES(权限被拒绝)
我的构建设置;
MinSDK版本15-TargetSDK版本19-编译DK版本25-
buildToolsVersion“25.0.0”
我使用Android Studio 2.3
调试设备:三星J1(SM-J200F)安卓5.1.1安卓安全补丁级别2016-12-01
及
索尼Xperia Z5(E6603)安卓7.0安卓安全补丁级别2016-12-01
但Google Play APK版本正在运行
安卓清单
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
试试这个:
检查mkdir()
是否返回成功..并删除.toString()
试试这个:
检查mkdir()
是否返回成功..并删除.toString()
您添加了运行时权限吗?我没有添加运行时。因为我使用的是targetSdkVersion 19,所以targetSdkVersion 23>=需要运行时权限
instaFolder.mkdir()代码>。检查返回值,因为mkdir可能会失败。在这种情况下,它返回false。如果返回false,则向告诉它的用户显示祝酒词。然后返回。不要继续编写代码,因为尝试在不存在的目录中创建文件没有什么意义。我在API 22上试用,API级别22不支持运行时权限您添加了运行时权限吗?我没有添加运行时权限。因为我使用的是targetSdkVersion 19,所以targetSdkVersion 23>=需要运行时权限instaFolder.mkdir()代码>。检查返回值,因为mkdir可能会失败。在这种情况下,它返回false。如果返回false,则向告诉它的用户显示祝酒词。然后返回。不要继续编写代码,因为尝试在不存在的目录中创建文件没有什么意义。您现在可以这样做。我尝试API 22,API级别22不支持运行时权限尝试在onCreate()ActivityCompat.requestPermissions中添加此行(这是新字符串[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},0)代码>不存在;我不想输入权限码…问题出在哪里?我使用Fyber广告。Fyber正在阻止我的后台服务。完成Fyber过程后,我通过启动自己的后台服务解决了这个问题,尝试在onCreate()ActivityCompat.requestPermissions(这是一个新字符串[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},0)中添加此行代码>不存在;我不想输入权限码…问题出在哪里?我使用Fyber广告。Fyber正在阻止我的后台服务。完成Fyber过程后,我通过启动自己的后台服务解决了问题
Line 124 : `FileOutputStream out = new FileOutputStream(file);`
`03-23 10:59:06.096 24568-24788/com.myAppName I/System.out: AsyncTask #1 calls detatch()
03-23 10:59:06.106 24568-24568/com.myAppName W/System.err: mkdir failed: EACCES (Permission denied) : /storage/emulated/0/MyAppName
03-23 10:59:06.106 24568-24568/com.myAppName D/Failed: Open
03-23 10:59:06.106 24568-24568/com.myAppName W/System.err: java.io.FileNotFoundException: /storage/emulated/0/MyAppName/MyAppName-6662.jpg: open failed: ENOENT (No such file or directory)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at libcore.io.IoBridge.open(IoBridge.java:456)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at com.myAppName.helper.FileDownloadHelper.SaveImage(FileDownloadHelper.java:124)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at com.myAppName.helper.FileDownloadHelper.onPostExecute(FileDownloadHelper.java:59)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at com.myAppName.helper.FileDownloadHelper.onPostExecute(FileDownloadHelper.java:27)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:636)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at android.os.AsyncTask.access$500(AsyncTask.java:177)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at android.os.Looper.loop(Looper.java:145)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6946)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at java.lang.reflect.Method.invoke(Native Method)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at libcore.io.Posix.open(Native Method)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: at libcore.io.IoBridge.open(IoBridge.java:442)
03-23 10:59:06.111 24568-24568/com.myAppName W/System.err: ... 15 more`
private Bitmap SaveImage(Bitmap result) {
String filename = "";
File instaFolder = new File(Environment.getExternalStorageDirectory().toString()
+ "/" + Constants.FOLDER_NAME);
if (!instaFolder.exists())
instaFolder.mkdir();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
filename = Constants.FOLDER_NAME + "-" + n + ".jpg";
file = new File(instaFolder, filename);
if (file.exists()) file.delete();
_mImageUrl = file.getPath();
try {
FileOutputStream out = new FileOutputStream(file);
result.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
File folder = new File(Environment.getExternalStorageDirectory() + "/" + Constants.FOLDER_NAME);
boolean success = true;
if (!folder.exists()) {
success = folder.mkdir();
}
if (success) {
Log.d("Success","Open");
// Do work on success
} else {
Log.d("Failed","Open");
// Do work else on failure
}