Разрешение на запись на 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);
}
}