2012-07-19 27 views
3

我正在向SDCard寫入文件,並將其設置爲<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />它可以正常工作到3.x,但在4.0上它提供了以下錯誤。Android中的文件寫入權限錯誤

java.io.IOException: open failed: EACCES (Permission denied) 
at java.io.File.createNewFile(File.java:940) 
at com.gt.mLearning.app.VideoViewActivity.copyFile(VideoViewActivity.java:204) 
at com.gt.mLearning.app.VideoViewActivity.access$3(VideoViewActivity.java:193) 
at com.gt.mLearning.app.VideoViewActivity$Loader.doInBackground(VideoViewActivity.java:61) 
at com.gt.mLearning.app.VideoViewActivity$Loader.doInBackground(VideoViewActivity.java:1) 
at android.os.AsyncTask$2.call(AsyncTask.java:264) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
at java.lang.Thread.run(Thread.java:856) 
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied) 
at libcore.io.Posix.open(Native Method) 
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 
at java.io.File.createNewFile(File.java:933) 

任何幫助或建議?

羅希特

+0

您正在使用模擬器或設備進行檢查嗎? – Ponmalar 2012-08-07 12:35:06

回答

1

後來我發現問題是設備特定的。我從Android市場安裝了文件管理器應用程序,並且沒有顯示寫入權限。這意味着該製造商的Android操作系統實施不提供導致該問題的寫入許可。

0

也許你已硬編碼的外部存儲目錄,它適用於特定設備。

Environment.getExternalStorageDirectory(); 

發佈你的代碼將有助於不僅僅是日誌等等。

+0

感謝發佈回覆親愛的,但我這樣做'Environment.getExternalStorageDirectory()。canWrite()'並得到錯誤:(悲傷 – 2012-07-19 10:25:27

+0

你的代碼工作以外的AsyncTask? – mihail 2012-07-19 10:36:24

+0

沒有嘗試過..是否重要? – 2012-07-19 11:03:41

5

只是猜測,但你可能有你的手機仍然連接到電腦?如果您的SD卡仍被鎖定爲USB設備,則可能會發生此錯誤。 希望這可以幫助, 托比亞斯

+0

感謝您的答覆,沒有它不是這樣的。後來我發現問題出在設備上。 – 2012-11-26 23:19:29

+0

我有同樣的問題,你給了我答案。感謝那! – Chris 2013-02-14 13:54:31

+0

當然,歡迎您(如同其他選項一樣):-) – 2013-02-15 15:46:57

0

你可能會檢查你剛剛更新了你的Android操作系統。一些重大變化導致SD卡問題。對於我來說,我使用Odin(這是三星固件更新應用程序)將SHV-E160K中的Android O/S從2.3.5更新到4.1.2。我面臨問題。 我詳細的錯誤信息如下:

02-14 11:00:43.057 22288-22288/? W/System.err﹕ java.io.IOException: open failed: EACCES (Permission denied) 
02-14 11:00:43.057 22288-22288/? W/System.err﹕ at java.io.File.createNewFile(File.java:940) 
02-14 11:00:43.057 22288-22288/? W/System.err﹕ at com.sec.android.util.IAPDeviceInfoEditor.activity.EditorActivity.createDeviceInfo(EditorActivity.java:222) 
02-14 11:00:43.057 22288-22288/? W/System.err﹕ at com.sec.android.util.IAPDeviceInfoEditor.activity.EditorActivity.onClick(EditorActivity.java:121) 
02-14 11:00:43.057 22288-22288/? W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method) 
02-14 11:00:43.057 22288-22288/? W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:511) 
02-14 11:00:43.057 22288-22288/? W/System.err﹕ at android.view.View$1.onClick(View.java:3685) 
02-14 11:00:43.057 22288-22288/? W/System.err﹕ at android.view.View.performClick(View.java:4192) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at android.view.View$PerformClick.run(View.java:17248) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:615) 
02-14 11:00:43.067  172-485/? V/AudioHardwareMSM8660﹕ open driver 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at android.os.Looper.loop(Looper.java:137) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:4950) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:511) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:997) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at dalvik.system.NativeStart.main(Native Method) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at libcore.io.Posix.open(Native Method) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ at java.io.File.createNewFile(File.java:933) 
02-14 11:00:43.067 22288-22288/? W/System.err﹕ ... 16 more 

原因是4.1.2無法在2.3.5識別的文件系統。我解決了這個格式化SD卡存儲。格式並不意味着刪除您的個人信息,如地址,備忘錄或歷史記錄。格式化後,它就像魔術一樣。

0

這可能對你有幫助。

在sdcard上寫入文件時,我遇到了同樣的問題。我已經設置寫入文件所需的所有權限,但我使用的文件象下面這樣的對象:

錯誤: myfile文件=新的文件(Environment.getExternalStorageDirectory()getAbsoluteFile()+文件名);

正確: myfile文件=新的文件(Environment.getExternalStorageDirectory()getAbsoluteFile(),文件名。);

這意味着路徑是錯誤的。