android mkdirs 不起作用,无法在Android 6.0中创建的目录与mkdirs(存储许可OK)
但是,如果用户授予应用程序的存储权限,则应用程序无法使用'mkdirs'在'onRequestPermissionsResult'方法中创建目录。
在AndroidManifest.xml我把'uses-permission':
package="com.xample.provasd"
android:versionCode="1"
android:versionName="1.0" >
然后在我处理的许可要求在MainActivity:
public void executeButton(View view){
final String[] PERMISSIONS_STORAGE = { Manifest.permission.WRITE_EXTERNAL_STORAGE };
//Asking request Permissions
ActivityCompat.requestPermissions(this,PERMISSIONS_STORAGE, 9);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
boolean writeAccepted = false;
switch(requestCode){
case 9:
writeAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED;
break;
}
if(writeAccepted){
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
File dir = new File(Environment.getExternalStorageDirectory()+"/"+"TestFolder");
boolean b = dir.mkdirs();
if(b){
Log.i("TAG", "WOW! "+dir+" created!");
}else{
Log.e("TAG", "OPS! "+dir+" NOT created! To be sure: new dir exist? "+dir.exists());
}
}
}
}
启动模拟器上的应用程序,请求对话框显示:允许执行'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
我不明白其中的道理。
请有人能帮助我吗?
谢谢
米尔科
2016-02-13
Mirko
+0
我复制了你的代码,并成功地在Nexus 5,6,9的模拟器上使用SDK Build Tools 23.0.2版运行它。如果您没有使用最新版本的工具,则可以考虑升级以查看它是否有所作为。当我第一次运行使用旧版本创建的模拟器时,即使为模拟器配置了SD卡(hw.sdCard = yes,仿真器的config.ini),也会将“Environment.MEDIA_MOUNTED”返回“移除”。 –
+0
非常感谢您的回复。那么,你的意思是它可能只是一个环境问题? 我正在更新SDK构建工具,我将尝试创建另一个机器实例。 PS。我发现一个可怕的解决方法:获得许可后,文件夹创建失败,但如果我做了一个“强制停止”的应用程序,我再次打开它...它的作品(没有再次请求许可)。 –
+0
编辑:更新SDK版本工具到版本23.0.2不起作用!但是我在真实的6.0设备上测试了代码,并且它可以正常工作。 –
android mkdirs 不起作用,无法在Android 6.0中创建的目录与mkdirs(存储许可OK)相关推荐
- android四大组件的作用简书,Android四大组件是什么
Android四大组件是:活动.服务.广播接收器.内容提供商.它们的英文名称是ACTIVITY.SERVICE.BroadcastReceiver.Content Provider.四个组件分别起到不 ...
- Android 8.0 中如何读取内部和外部存储以及外置SDcard
最近碰到询问我这个读取SDcard的问题, 很久没有看这部分了,所以大致看了一下, 顺便记录一下.在Android 8.0上做了测试. 一般的Android App能读取的存储空间主要有三种: app ...
- 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中创建 Python 程序 | 导入 ELFFile 库 | 解析 ELF 文件 )
文章目录 一.PyCharm 中创建 Python 程序 二.导入 ELFFile 依赖库 三. 解析 ELF 文件 四. 博客源码 一.PyCharm 中创建 Python 程序 在 PyCharm ...
- android file isdirectory,android – 为什么我不能在Environment.DIRECTORY_PICTURES中创建一个目录?...
这是我的代码 File selfieLocation = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES),"Dail ...
- 创建raid磁盘阵列的作用_如何在Windows 7中创建软件RAID阵列
创建raid磁盘阵列的作用 Instead of having a bunch of separate drives to deal with, why not put them together i ...
- 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )
文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...
- android mkdirs 不起作用,Android mkdirs()创建一个零字节文件而不是文件夹
在我的 Android应用程序中,我试图在SD卡上创建以下文件夹: /mnt/sdcard/OSGiComponents/admin/felix-cache/ 这是代码: File cacheDir ...
- android mkdirs 不起作用,android设置铃声的时候f.mkdirs()创建不了?解决办法
当前位置:我的异常网» Android » android设置铃声的时候f.mkdirs()创建不了?解决办法 android设置铃声的时候f.mkdirs()创建不了?解决办法 www.myexce ...
- android任务栈的作用,Android 启动模式以及任务栈
1.Android 主要包含4种启动模式,下面分别介绍四种启动方式的特点: 1)tandard 默认的启动模式,标准模式 每开启一个Activity,就会在栈顶添加一个Activity实例.多次间隔或 ...
最新文章
- PCL工程的CMakeList.txt文件书写规范
- 53.C#--多线程
- 全国大学生智能猫竞速比赛
- java svn安装地址_SVN的安装和配置
- 【直播课】有三AI直播答疑服务上线,如何学习计算机视觉与准备面试直播限时免费...
- boost::safe_numerics模块实现检测到错误表达式评估的测试程序
- 成为一个合格的as3程序猿
- linux工具:ssh---未完
- php 设置excel格式,php 操作excel文件的方法小结
- 可搜索的文件? 是的你可以。 选择AsciiDoc的另一个原因
- python常见运维脚本_Python运维常用脚本
- Mac程序开机启动项优化
- Oracle数据库基础学习
- cad画流程图的插件_CAD高手教您画工艺流程图设计一些列图
- 关于“wuauclt.exe”病毒的清理
- html制作一个视频播放器,H5 打造属于自己的视频播放器(HTML 篇)
- 在Linux中,如何找回root密码(So easy!!)
- maven创建eclipse wtp项目
- 云计算与大数据复习题
- 1:25万全国地形数据库说明(转)