Evaluación de MonoDroid System.UnauthorizedAccessException en Directory.CreateDirectory()

Escenario:

Iniciar MonoDevelop

nueva aplicación de Android

Reemplace el delegado de clic de botón con

string fullPath = "/data/misc.mvvmcross.customermanagement/files/_Caches/Pictures.MvvmCross/";
if (System.IO.Directory.Exists(fullPath))
{
    button.Text = "exists";
}
else
{
    button.Text = "not found";
    Directory.CreateDirectory(fullPath);
}

ejecutar y hacer clic en el botón. Directory.CreateDirectory fallará con

System.UnauthorizedAccessException

Intenté crear una nueva imagen de emulador con diferentes niveles de API, pero el problema sigue aquí

¿Alguna idea de alguien?

Ok, he creado una nueva imagen de emulador de Android y la he usado. Todo ahora funciona.

Solución: cree una nueva imagen de emulador de Android para el nivel de API que desee (no olvide la compatibilidad con la API de Google)

preguntado el 03 de mayo de 12 a las 11:05

1 Respuestas

Me pregunto si esto se debe a algún tipo de problema de nomenclatura de ensamblaje/paquete.

He probado este código:

        string fullPath = Path.Combine(FilesDir.Path, "_Caches2/Pictures.MvvmCross/2/");
        if (System.IO.Directory.Exists(fullPath))
        {
            button.Text = "exists";
        }
        else
        {
            button.Text = fullPath;
            Directory.CreateDirectory(fullPath);
        }

...y funciona bien en un emulador 2.3.3.

El patrón de la carpeta de datos es: /data/ * package name * /files/

Y es correcto (creo) que un paquete no pueda acceder a los datos de otro.

Entonces, me pregunto si de alguna manera los nombres de sus paquetes son incorrectos: verifique la pestaña de manifiesto y el archivo manifest.xml para su aplicación.

contestado el 03 de mayo de 12 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.