2010-11-17 158 views
1

我在我的应用程序的内部存储(/data/data/com.my_app)创建一个目录,并通过该方法的Android/Linux文件权限问题

context.getDir(DATA_DIR_NAME, Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);

给全局读/写权限的目录

通过我的应用程序,我验证了Linux的文件权限是否正确:

drw-rw-rw- app_71 app_71 2010-11-16 18:38 app_data

,我能够在对/目录的App_Data乱就好了读/写文件。但是,我的一位开发人员突然无法再写入目录。我们的应用程序也无法访问他设备上的目录。

奇怪的是,该目录的文件权限仍然相同。我们无法对该目录进行任何类型的写入,也无法再读取目录中的任何文件(以前,这些文件已获得全局rw权限)。

我们唯一能做的就是adb shell ls /data/data/my_app/app_data来查看我们的文件列表。奇怪地做adb shell ls -l /data/data/my_app/app_data不会返回任何东西。我们也无法将光盘放入目录中。

有没有人有任何问题的指针或如何解决这个问题?我们在智慧的结尾。

非常感谢。

+0

是否有任何有用的日志,而你尝试访问从手机,不打开它的目录? – apps 2010-11-17 23:42:13

+0

ADB Shell命令不会返回任何有用的内容。如果我尝试通过我的应用程序读取/写入目录中的文件,它会抛出一个描述权限被拒绝的异常。使用drw-rw-rw-目录的权限,我希望能够至少写入一个文件。除了异常堆栈跟踪之外,没有任何相关内容被打印在logcat中。 – LLTLL 2010-11-18 00:43:28

+0

发布回溯? – JimR 2010-11-18 01:04:31

回答

1

目录需要将execute(X)位设置为能够访问目录的内容。我不知道android模式,但查找MODE_WORLD_EXECUTABLE,看看你是否可以设置。

基本上,您需要模式0777(rwxrwxrwx)来使用全部权限进行全局访问。

原因ls的工作原理是您有权读取目录中的文件名。 ls -l不起作用,因为您无法访问目录中的文件以获取-l将要打印的元数据。

+0

我会试试这个,谢谢你的提示! – LLTLL 2010-11-18 19:01:58