Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用mkdirs在Android 6.0上创建目录(存储权限正常)_Android_Storage_Mkdirs - Fatal编程技术网

无法使用mkdirs在Android 6.0上创建目录(存储权限正常)

无法使用mkdirs在Android 6.0上创建目录(存储权限正常),android,storage,mkdirs,Android,Storage,Mkdirs,我正在尝试使用新的运行时权限将我的应用程序源代码更新到Android 6.0 但是,如果用户向应用程序授予存储权限,应用程序将无法使用'mkdirs'在'onRequestPermissionsResult'方法中创建目录 在AndroidManifest.xml中,我放置了“uses-permission”: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.andro

我正在尝试使用新的运行时权限将我的应用程序源代码更新到Android 6.0

但是,如果用户向应用程序授予存储权限,应用程序将无法使用
'mkdirs'
'onRequestPermissionsResult'
方法中创建目录

在AndroidManifest.xml中,我放置了
“uses-permission”

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xample.provasd"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="23" />

        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- application, activity, etc -->
在emulator上启动应用程序时,会显示请求对话框:允许权限执行
“onRequestPermissionsResult”
的主体
(writeAccepted=true)
,但不会创建文件夹

这是LogCat中显示的内容:

I/TAG(9020): Permission ok
I/TAG(9020): Try to create dir: /storage/3143-1CEA/TestFolder
E/TAG(9020): OPS! /storage/3143-1CEA/TestFolder NOT created! To be sure: new dir exist? false
我不明白原因

拜托,有人能帮我吗

谢谢,


米尔科

问题可能不在代码中。如果您的手机运行在Android 6.0上,请查看您的应用程序是否具有足够的权限。

我复制了您的代码,并使用SDK构建工具版本23.0.2在Nexus 5、6、9的模拟器上成功运行了它。如果您不使用最新版本的工具,您可能会考虑升级,看看它是否有区别。当我第一次使用使用旧版本创建的仿真器运行时,
Environment.MEDIA\u MOUNTED
返回“removed”,即使为SD卡配置了仿真器(在仿真器的config.ini中为hw.sdCard=yes)。非常感谢您的回复。那么,你的意思是,这可能只是一个环境问题吗?我正在更新SDK构建工具,并将尝试创建另一个机器实例。另外,我发现了一个糟糕的解决方法:在获得许可后,文件夹创建失败,但如果我对应用程序执行“强制停止”并再次打开它。。。它可以工作(无需再次请求许可)。编辑:将SDK构建工具更新到版本23.0.2不起作用!但是我在一个真正的6.0设备上测试了代码,它可以工作。我做了更多的实验,无法解释为什么你的代码在模拟器上不能工作。有报道称,在获得
写入外部存储后,需要重新启动应用程序(请参见此),但我认为这个问题只出现在棉花糖的预览版中。我也是。我无法理解为什么这个非常简单的代码不能在我所有的6.0仿真设备上工作(每个SDK组件都会更新)。多亏了你的第一句话,我在一台物理设备上试了试,它可以正常工作(经过2天的调试)。再次感谢您的时间。请仅在英语堆栈上用英语回答。"请只用英文回答有关英国堆栈溢出。"这个问题只发生在(我的)6.0模拟设备上:我在一个物理设备上尝试过,它就像一个符咒一样工作(应用程序有足够的权限)。
I/TAG(9020): Permission ok
I/TAG(9020): Try to create dir: /storage/3143-1CEA/TestFolder
E/TAG(9020): OPS! /storage/3143-1CEA/TestFolder NOT created! To be sure: new dir exist? false