Ошибка разрешения записи файла в Android

Я пишу файл на SDCard и устанавливаю <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> он работает хорошо до 3.x, но в 4.0 он дает ошибку ниже.

 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) 

Любая помощь или предложение?

Рохит

Просто угадай, но, возможно, у тебя телефон все еще подключен к компьютеру? Эта ошибка может произойти, если ваша SD-карта все еще заблокирована как устройство USB. Надеюсь, это помогло, Тобиас

В последнее время я обнаружил, что проблема связана с устройством. Я установил приложение «Диспетчер файлов» с Android-рынка и не указал на разрешение на запись. Это означает, что реализация ОС Android этого производителя не дает разрешения на запись, которое вызывает проблему.

Вероятно, у вас есть жестко закодированный внешний каталог хранилища, и он работает на определенных устройствах.

 Environment.getExternalStorageDirectory(); 

Проводка кода поможет гораздо больше, чем просто журнал.

Вы можете проверить, что вы только что обновили свой Android O / S. Некоторое серьезное изменение вызывает проблему с SDK. Для меня я обновляю свой Android O / S в SHV-E160K с 2.3.5 до 4.1.2 с помощью Odin, который представляет собой приложение для обновления прошивки Samsung. И я столкнулся с проблемой. Мое подробное сообщение об ошибке выглядит следующим образом:

 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. Я решаю это хранилище sdcard для форматирования. Формат не означает удаление вашей личной информации, такой как адрес, памятка или история. После форматирования он работает как магия.

Это может вам помочь.

Я столкнулся с такой же проблемой при записи файла на SD-карте. Я установил все необходимые разрешения для записи файла, но я использовал файловый объект, как показано ниже:

Неверно : файл myFile = новый файл (Environment.getExternalStorageDirectory (). GetAbsoluteFile () + имя_файла);

Правильно : File myFile = новый файл (Environment.getExternalStorageDirectory (). GetAbsoluteFile (), fileName);

Это означает, что путь был неправильным.