2014-10-29 380 views
0

我無法在「/ storage/extSdCard/Android/data」中創建我的應用程序的「com.foo.Example」文件夾在應用程序內。如果使用文件管理器手動創建,則不會出現問題,只需使用簡單的mkdir創建第一個就會返回false。 我使用了聲明中聲明的包名,並且始終使用它,並且在那裏也有相應的WRITE_EXTERNAL_STORAGE權限。 如果應用程序無法創建它,此文件夾從何而來?在../Android/data中創建包目錄在Android上的SD卡上拒絕4.4

+0

由於atomicrat意味着你不應該假設存儲卷的路徑是什麼 - 而是使用適當的API在運行時確定它。 – 2014-10-29 16:31:58

回答

3

我假設你使用getExternalFilesDir(),如果沒有,你會想要轉換爲它。 getExternalFilesDir(),當傳遞null時,將爲您的應用程序創建一個專用目錄,如果它尚不存在並返回該句柄。

您需要查看this guide,其中包含有關如何寫入外部存儲的所有信息。

至於你爲什麼在KitKat上遇到這個問題,Google更改了外部存儲的權限模型,以防止應用程序寫入SD卡上的任意文件夾,這提供了更好的安全性,並且使組織更好。然而,很酷的部分是,getExternalFilesDir()甚至不需要使用權限!它始終可用於您的應用程序。

希望有幫助!

+0

我發現我的錯誤,我錯誤地認爲文件夾「../com.foo.Example」是我可以寫入的文件夾,並沒有意識到它是「../com.foo.Example/files」。所以getExternalFilesDir()返回確實正確的路徑,爲此歡呼。 – Templerschaf 2014-10-31 12:29:12