2010-11-17 428 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