无法使用mkdirs在Android 6.0上创建目录(存储权限正常)
我正在尝试使用新的运行时权限将我的应用程序源代码更新到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
'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