本文介绍了Android的失败的mkdir()SD卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些code创建/获得SD卡上的文件夹:
如果(hasSDCard()){ UUID uniqueFileName = UUID.randomUUID(); mediaStorageDir =新的文件(
getExternalImageStoragePath(),
MyApp的); 如果(!mediaStorageDir.exists()){ 如果(!mediaStorageDir.mkdirs()){ MyLogger.Error(创建映像目录失败的路径:+ mediaStorageDir.getPath()); 返回null;
}
}
和我在我的清单文件中注册的权限:
<使用许可权的android:NAME =android.permission.WRITE_EXTERNAL_STOREAGE/>
<使用许可权的android:NAME =android.permission.MOUNT_UNMOUNT_FILESYSTEMS/>
但是当我运行它,它打印:
创建失败的映像目录。路径:/存储/模拟/ 0 /图片/ MyApp的
我想知道为什么发生这种情况?
===更新===
我已经尝试了所有的人:
/ **
*获取图像外部存储目录路径
* @返回
* /
公共静态字符串getExternalImageStoragePath(){ 字符串strPath的=; 如果(hasSDCard()){
// strPath的= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath();
// strPath的= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
// strPath的= Environment.getExternalStorageDirectory()的getPath();
strPath的= Environment.getExternalStorageDirectory()getAbsolutePath()。
} 返回strPath的;
}
但他们都表现得完全一样...
===更新2 ===
我用的Nexus 5的测试,我看到这个帖子Cannot找到存储/模拟/ 0 /的Nexus 7的在Eclipse文件夹可能有一些问题?
===更新3 ===
>>亚行外壳的ls -l /存储/
DR-XR-XR-X根根1970年1月24日23:48模拟
lrwxrwxrwx根根1970年1月24日23:48 sdcard0 - > /存储/模拟/遗产>>亚行外壳的ls -l /存储/模拟/ 0 /图片/
/存储/模拟/ 0 /图片/:没有这样的文件或目录
===更新=== 4
下面是我的 hasSD()
方法:
公共静态布尔hasSDCard(){
布尔fHasSDCard = FALSE; 如果(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
fHasSDCard = TRUE;
} 返回fHasSDCard;
}
解决方案
编辑:你有拼写错误您的许可(你有StoreAge的,而正确的是存储)
修改
<使用许可权的android:NAME =android.permission.WRITE_EXTERNAL_STOREAGE/>
到
<使用许可权的android:NAME =android.permission.WRITE_EXTERNAL_STORAGE/>
除非你不这样做已经hasSDCard(),请检查您的外部媒体可在所有。由于说:
An example they provide:
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
// Something else is wrong. It may be one of many other states, but all we need
// to know is we can neither read nor write
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
这篇关于Android的失败的mkdir()SD卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!