我试图在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>
答案 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版本上的另一个原因。