本文介绍了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_STORAG​​E/>

除非你不这样做已经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卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-02 23:42