1

シナリオ:

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 Emulator イメージを作成し、それを使用しました。すべてが機能するようになりました。

解決策: 必要な API レベルの新しい Android エミュレーター イメージを作成します (Google API のサポートを忘れないでください)。

4

1 に答える 1

0

これは、何らかのアセンブリ/パッケージの命名の問題が原因であるかどうか疑問に思っています。

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

        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/

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

どういうわけかパッケージ名が間違っているのではないかと思います.アプリケーションのマニフェストタブとmanifest.xmlファイルを確認してください。

于 2012-05-03T12:21:52.223 に答える