3
我已经得到了Android 2.3一个相当棘手的问题:我有收集用于调试和支持目的的各种日志(my company做Linux的坚固的硬件)的应用程序,并已停止工作最近,因为它没有写入SD卡。下面是我见过的症状和我进行的调查:Android的SD卡写入失败,但不能始终如一
- 是跨多种类型具有不同的SD卡,所有这些都被检查文件系统损坏(未发现问题)的多台设备。
- 所有设备报告:Environment.getExternalStorageState()等于Environment.MEDIA_MOUNTED。
- 所有这些器件还报告说,Environment.getExternalStorageDirectory()。getAbsolutePath()。canWrite()是假的。
- 通过PackageManager.checkPermission(),我的应用报告它具有WRITE_EXTERNAL_STORAGE权限。
- OI文件管理器能够创建目录并移动SD卡上的文件;我的应用程序无法做到。
此代码是足以导致失败:
String sdcardDirectory = Environment.getExternalStorageDirectory().getAbsolutePath();
File directory = new File(sdcardDirectory + "/logger");
if(!directory.mkdirs()){
//fails here.
Log.w("Logger", "Could not create logger directory.");
}
因为我有机会获得该设备的钥匙,我甚至至今为标志的平台关键应用程序并运行它去作为android.uid.system,没有运气。有人有主意吗?
后您使用的是尝试写TEH外部SD – bbedward 2012-03-13 13:48:46
尔加的代码。我只是将它编辑为原始文章。 – Fishbreath 2012-03-13 14:03:02
如果你的设备上有“adb shell”,你可以在那里创建文件/目录吗? “ls -la”会告诉你SD卡目录中的文件/文件夹具有正确的权限吗? '-rwxrwxrwx 1 1000 1015 0 Mar 13 14:18 file''drwxrwxrwx 2 1000 1015 4096 Mar 13 14:19 folder'就是我所得到的。这些数字(1000和1015)也很重要,并且是'WRITE_EXTERNAL_STORAGE'权限所必需的(1015是Linux中的一个组,每个应用程序获得该权限时都会获得该组)。 – zapl 2012-03-13 14:21:06