2016-11-07 4 views
1

Я призываю силу SO в другой раз!UnauthorizedAccessException в File.CreateText

получил исключение на этот код:

 string filePath = "/sdcard/Download/test.txt"; 

     using (StreamWriter stream = File.CreateText(filePath)) 
     { 
      //stuff that is currently never done 
     } 

"File.CreateText" генерирует следующее сообщение об ошибке во время выполнения:

UnauthorizedAccessException 

Я проверил мой AndroidManifest: "WRITE_EXTERNAL_STORAGE" и "READ_EXTERNAL_STORAGE" указаны.

Я также попытался использовать «Environment.ExternalStorageDirectory» вместо этого текущего пути, что привело к той же ошибке.

Фокус в том, что этот код работал в другом решении. Поэтому проблема должна исходить из моих настроек. Какой из них может быть причиной проблемы?

ответ

0

Aaaaaaand вот ответ:

код был прекрасен, это был вопрос разрешения. Мой тестовый код находился под Android Lollypop, но затем я использовал этот код под Android Marshmallow, в рабочем приложении.

На Marshmallow вам необходимо указать EXPLICITLY некоторые ваши важные разрешения во время выполнения, такие как BLUETOOTH, BLUETOOTH_ADMIN .... или WRITE_EXTERNAL_STORAGE.

Вот строки, чтобы добавить в OnCreate:

 string[] Permissions = { Android.Manifest.Permission.WriteExternalStorage }; 
     int RequestLocationId = 0; 
     RequestPermissions(Permissions, RequestLocationId); 

Вы можете знать, если пользователь принял разрешение с обратным вызовом OnRequestPermissionResult.

Вот незавершенная статья от разработчиков Android:

https://developer.android.com/training/permissions/requesting.html

Смежные вопросы