2012-05-03 8 views
1

シナリオ:MonoDroid評価System.UnauthorizedAccessException()

スタートMonoDevelopの

新しいAndroidアプリケーション

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

実行してボタンクリックデリゲートを交換し、ボタンをクリックしてください。任意の考えの人をDirectory.CreateDirectoryが

System.UnauthorizedAccessException 

で失敗します は異なるAPIレベルでの新しいエミュレータイメージを作成しようとしたことがありますが、問題はまだここに

のですか?

[OK]を、新しいAndroidエミュレータイメージを作成し、それを使用しました。 すべてが動作するようになりました。

ソリューション: これは問題に名前を付けるアセンブリ/パッケージのいくつかの種類によって引き起こされている場合、私は思ったんだけど

答えて

0

あなたは(GoogleのAPIのサポートを忘れないように)したいAPIレベルのための新しいAndroidのエミュレータイメージを作成します。

私はこのコードをテストしてみた:

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

を...、それは2.3.3エミュレータで正常に動作します。

データフォルダパターンがある:/data/ * package name * /files/

そして、それは別のデータにアクセスすることができないように一つのパッケージのために(と思う)が正しいです。

どうやらあなたのパッケージ名が間違っているのでしょうか?アプリケーションのマニフェストタブとマニフェストファイルを確認してください。