1

设想:

开始 MonoDevelop

新的安卓应用

将按钮单击委托替换为

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 级别的新模拟器映像,但问题仍然存在

有什么想法吗?

好的,已经创建了新的 Android 模拟器图像并使用了它。现在一切正常。

解决方案:为您想要的 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 回答