2012-05-03 1 views
1

Scénario:évaluation MonoDroid System.UnauthorizedAccessException dans Directory.CreateDirectory()

Début MonoDevelop

nouvelle Application Android

bouton Remplacer délégué cliquez avec

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); 
} 

exécuter et cliquez sur le bouton . Directory.CreateDirectory échouera avec

System.UnauthorizedAccessException 

ont essayé de créer une nouvelle image de l'émulateur avec différents niveaux de l'API, mais le problème est toujours là

Toute anyone pensées? Ok, J'ai créé une nouvelle image d'émulateur Android et je l'ai utilisée. Tout fonctionne maintenant.

Solution: Créer une nouvelle image de l'émulateur Android pour le niveau de l'API que vous voulez (ne pas oublier le soutien Google API)

Répondre

0

Je me demande si cela est causé par une sorte d'assemblée/package question de nommage.

Je l'ai testé ce code:

 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); 
     } 

... et il fonctionne très bien dans un émulateur 2.3.3.

Le modèle de dossier de données est: /data/ * package name * /files/

Et il est correct (je pense) pour un paquet de ne pas être en mesure d'accéder aux données d'une autre. Donc, je me demande si vos noms de paquets sont faux - vérifiez l'onglet manifest et le fichier manifest.xml pour votre application?

Questions connexes