java - studio - Permiso para escribir en la tarjeta SD
manejo de archivos en android studio (2)
Me gustaría que mi aplicación archive el DB de la aplicación en la tarjeta SD. En mi código canWrite()
si el directorio canWrite()
existe, y si no, lanzo una IOException
. En esta instancia particular, estoy tratando de copiar el archivo db al directorio raíz en la tarjeta SD, pero está lanzando una IOException
. ¿Cómo puedo cambiar el permiso en una carpeta / archivo para poder escribir en él?
La técnica sugerida anteriormente en la respuesta de Dave es ciertamente una buena práctica de diseño, y sí, en última instancia, el permiso requerido debe establecerse en el archivo AndroidManifest.xml para acceder al almacenamiento externo.
Sin embargo, la forma Mono-esque para agregar la mayoría (si no todas, no estoy seguro) de "opciones de manifiesto" es a través de los atributos de la clase que implementa la actividad (o servicio).
El plugin de Visual Studio Mono genera automáticamente el manifiesto, por lo que es mejor no manipularlo manualmente (estoy seguro de que hay casos en los que no hay otra opción).
Por ejemplo:
[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);
}
}
Tiene razón en que el directorio de la tarjeta SD es /sdcard
pero no debería ser difícil de codificar. En su lugar, realice una llamada a Environment.getExternalStorageDirectory()
para obtener el directorio:
File sdDir = Environment.getExternalStorageDirectory();
Si aún no lo ha hecho, deberá dar a su aplicación el permiso correcto para escribir en la Tarjeta SD agregando la siguiente línea a su Manifiesto:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />