我正在尝试在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版本的另一个原因。