我已经设置了以下我的Android清单:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
我的活动中有以下内容:
File sd = Environment.getExternalStorageDirectory();
boolean can_write = sd.canWrite();
Run Code Online (Sandbox Code Playgroud)
sd返回/ mnt/sdcard
我在我的设备上测试(evo 3d)而不是模拟器.SD卡已安装.它只在充电模式和没有插入usb电缆时发生.Google上的各种页面和堆栈上的帖子显示完全相同的方法来检查SD卡是否可写,所以我必须丢失一些东西.
更新:
我尝试以下代码,并抛出ioexception权限被拒绝.
File TestFile = new File(sd + "/testfile.txt");
try {
boolean result = TestFile.createNewFile();
if(result)
{
Log.i("tag","successfully created file");
} else {
Log.i("tag","failed to create file");
}
} catch (IOException e) {
Log.e("tag",e.toString() + " " + TestFile);
return false;
}
Run Code Online (Sandbox Code Playgroud)
我已经格式化了我的SD卡,重新安装它,并重新启动了手机,但仍然有同样的错误.
UPDATE
显然,这是我自己的无知导致它失败.我的权限阻止在我的清单的错误部分.再次感谢 :)
Otr*_*tra 13
我不会使用sd.canWrite(),实际上,我会使用这样的东西:
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
Log.d("Test", "sdcard mounted and writable");
}
else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
Log.d("Test", "sdcard mounted readonly");
}
else {
Log.d("Test", "sdcard state: " + state);
}
Run Code Online (Sandbox Code Playgroud)
摘自此处:http://www.xinotes.org/notes/note/1270/
| 归档时间: |
|
| 查看次数: |
5838 次 |
| 最近记录: |