Android 2.3有一个非常棘手的问题:我有一个应用程序收集各种日志以进行调试和支持(my company Linux用于坚固的硬件),并且最近停止了工作,因为它失败了写入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运行,但没有运气。有人有什么想法吗?
答案 0 :(得分:1)
事实证明,这部分是我的不良诊断,部分是2.1至2.3的明显变化。
错误的诊断是上面的目录确实正在创建。 2.1和2.3之间的明显变化可能是Android内部,或者它可能是我们在自己的构建中设置路径,PATH和符号链接的方式。从原始帖子中的代码开始,有一些调用exec()来获取例如logcat的输出和/ proc中各种有用信息的副本;使用命令的绝对路径解决了问题。
感谢你帮忙解决问题。