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



我正在尝试在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>

您不应该在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中声明许可是不够的。您需要在运行时间请求许可。这就是为什么它可以使用Kitkat而不能使用较新的Android版本的另一个原因。

最新更新