联想不允许在SD卡中创建文件夹

时间:2017-03-12 04:52:10

标签: android directory

我试图在android sd卡中创建一个文件夹...为此,我已经在清单文件中添加了权限,我的这是我的代码..

public void createFile(View view)
    {
        String state= Environment.getExternalStorageState();
        if(Environment.MEDIA_MOUNTED.equals(state)){
            File wallpaperDirectory = new File("/sdcard/Wallpaper/");
            res=wallpaperDirectory.mkdir()
            if(res){
                Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(this, "Failed", Toast.LENGTH_SHORT).show();
            }
        }
        else{
            Toast.makeText(this, "Make sure that you have a memory card mounted...", Toast.LENGTH_SHORT).show();
        }
    }

当我在kitkat模拟器中运行相同的代码时,它的创建文件夹但它始终在联想中失败...提前感谢...

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="bk.acs">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubActivity1"></activity>
    </application>

</manifest>

1 个答案:

答案 0 :(得分:0)

您不应该在Android中硬编码文件路径。 /sdcard/并不适用于所有Android设备。

改为使用Environment.getExternalStorageDirectory()

以下是:

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
    File wallpaperDirectory = new File(Environment.getExternalStorageDirectory(), "Wallpaper");
    if(!wallpaperDirectory.exist()) {
        wallpaperDirectory.mkdir();
        ...
    }
}

此外,如果您要测试6.0+ Android版本,只需在AndroidManifest.xml中声明权限是不够的。你需要request permission during run time。这也是为什么它可能在KitKat工作而不是在更新的Android版本上的另一个原因。