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

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

2 ответа

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

File sdDir = Environment.getExternalStorageDirectory();

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

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

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

Тем не менее, моно-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);
  }
}
Другие вопросы по тегам