Разрешение на запись на SD-карту

Я хочу, чтобы мое приложение архивировало DB приложения на SD-карту. В моем коде я проверяю, существует ли каталог canWrite() , а если нет, бросает IOException . В этом конкретном случае я пытаюсь скопировать db-файл в корневой каталог на SD-карте, но он бросает IOException . Как я могу изменить разрешение на папку / файл, чтобы иметь возможность писать на него?

Solutions Collecting From Web of "Разрешение на запись на SD-карту"

Вы правы, что каталог SD Card – это /sdcard но вы не должны его жестко кодировать. Вместо этого сделайте вызов Environment.getExternalStorageDirectory() чтобы получить каталог:

 File sdDir = Environment.getExternalStorageDirectory(); 

Если вы еще этого не сделали, вам нужно будет предоставить вашему приложению правильное разрешение на запись на SD-карту, добавив строку ниже к вашему манифесту:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Предлагаемая методика выше в ответе Дейва, безусловно, хорошая практика проектирования, и да, в конечном итоге требуемое разрешение должно быть установлено в файле AndroidManifest.xml для доступа к внешнему хранилищу.

Однако способ Mono-esque для добавления большинства (если не всех, не уверен) «параметров манифеста» осуществляется через атрибуты класса, реализующего действие (или службу).

Плагин Visual Studio Mono автоматически генерирует манифест, поэтому лучше не вмешиваться в него вручную (я уверен, что есть случаи, когда другого варианта нет).

Например:

 [Activity(Label="MonoDroid App", MainLauncher=true, Permission="android.permission.WRITE_EXTERNAL_STORAGE")] public class MonoActivity : Activity { protected override void OnCreate(Bundle bindle) { base.OnCreate(bindle); } }