Android SD卡写入失败,但不一致

时间:2012-03-13 13:46:41

标签: android

Android 2.3有一个非常棘手的问题:我有一个应用程序收集各种日志以进行调试和支持(my company Linux用于坚固的硬件),并且最近停止了工作,因为它失败了写入SD卡。以下是我见过的症状以及我所进行的调查:

  • 发生在具有不同SD卡的多种类型的多个设备上,所有这些设备都已检查文件系统损坏(未发现任何问题)。
  • 所有设备报告:Environment.getExternalStorageState()等于Environment.MEDIA_MOUNTED。
  • 所有设备还报告Environment.getExternalStorageDirectory()。getAbsolutePath()。canWrite()为false。
  • 通过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运行,但没有运气。有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

事实证明,这部分是我的不良诊断,部分是2.1至2.3的明显变化。

错误的诊断是上面的目录确实正在创建。 2.1和2.3之间的明显变化可能是Android内部,或者它可能是我们在自己的构建中设置路径,PATH和符号链接的方式。从原始帖子中的代码开始,有一些调用exec()来获取例如logcat的输出和/ proc中各种有用信息的副本;使用命令的绝对路径解决了问题。

感谢你帮忙解决问题。