Database design MvvmCross.Platform.Exceptions.MvxException::Xamarin.Social.Accounts(权限被拒绝)-SQLCipher

Database design MvvmCross.Platform.Exceptions.MvxException::Xamarin.Social.Accounts(权限被拒绝)-SQLCipher,database-design,xamarin.android,permission-denied,sqlcipher-android,xamarin.social,Database Design,Xamarin.android,Permission Denied,Sqlcipher Android,Xamarin.social,在Android应用程序上使用带MvvmCross的SqlCipher时,我遇到了一个错误 我目前面临的问题似乎是关于在我正在运行的模拟设备上本地创建数据库的权限。 在花了大量时间搜索这个主题之后,我似乎无法找到解决方案。我将在下面列出我尝试过的事情,然后进一步详细说明错误: 在Manifest.xml文件上添加各种权限,以允许SqlCipher写入设备。(经过一定量的研究后,只有在向设备上的SD卡写入数据时,才需要执行此操作) 查看了访问该公司SqlCipher帐户所需权限的任何可能性-这也

在Android应用程序上使用带MvvmCross的SqlCipher时,我遇到了一个错误

我目前面临的问题似乎是关于在我正在运行的模拟设备上本地创建数据库的权限。 在花了大量时间搜索这个主题之后,我似乎无法找到解决方案。我将在下面列出我尝试过的事情,然后进一步详细说明错误:

  • 在Manifest.xml文件上添加各种权限,以允许SqlCipher写入设备。(经过一定量的研究后,只有在向设备上的SD卡写入数据时,才需要执行此操作)
  • 查看了访问该公司SqlCipher帐户所需权限的任何可能性-这也不是问题,因为我们在项目中添加了必要的dll
  • 所有对必要文件和包的引用似乎都在那里,并且与当前上下文是最新的
我已经缩小了项目中问题的起点。从本质上说,我正在编写一个android应用程序,并慢慢引入我们已经设置好的业务逻辑,以使其启动并运行。我们的iOS应用程序使用的库和数据库结构与我尝试在Android上使用的库和数据库结构相同,但我在iOS端没有发现这个错误

这是我得到的错误:

data/user/0/“公司文件位置”/files/Xamarin.Social.Accounts(权限被拒绝)

当MvvmCross试图解析以下代码以在本地创建数据库时,会弹出此错误:

命名空间HiddenForSecurity.Mobile.Data.Droid { 公共类DatabaseContextService:IDatabaseContextService { 私有SQLiteConnection _connection=null; 私有对象_connectionLock=新对象()

公共对象连接
{
得到
{
锁(连接锁)
{
返回连接;
}
}
}
公共数据库上下文服务()
{
_连接=新的SQLiteConnection(数据库路径、数据库密码);
}
public void InitialiseDatabase()
{
_connection.CreateTable();
_connection.CreateTable();
_connection.CreateTable();
_connection.CreateTable();
}
公众假期结束()
{
_connection.Close();
_connection.Dispose();
}
公共字符串数据库路径
{
得到
{
返回Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),“patientportal.db”);
}
}
私有字符串数据库密码
{
得到
{
var context=Mvx.Resolve().Activity.ApplicationContext;
Account accounts=AccountStore.Create(上下文)
.FindAccountsForService(“PatientPortal”)
.FirstOrDefault(x=>x.Username==“系统用户”);
如果(帐户==null)
{
账户=新账户(“系统用户”);
accounts.Properties[“db”]=System.Guid.NewGuid().ToString();
AccountStore.Create(context).Save(accounts,“PatientPortal”);
}
返回帐户。属性[“db”];
}
}
}
}

有人知道我为什么会在Xamarin.Social.Account上出错吗

非常感谢-请询问任何必要的信息

利亚姆

    public object Connection
    {
        get
        {
            lock (_connectionLock)
            {
                return _connection;
            }
        }
    }

    public DatabaseContextService()
    {
        _connection = new SQLiteConnection(DatabasePath, DatabasePassword);
    }

    public void InitialiseDatabase()
    {
        _connection.CreateTable<MobileUser>();
        _connection.CreateTable<UserRole>();
        _connection.CreateTable<OfflineReport>();
        _connection.CreateTable<OfflineDiary>();
    }

    public void Close()
    {
        _connection.Close();
        _connection.Dispose();
    }

    public string DatabasePath
    {
        get
        {
            return Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "patientportal.db");
        }
    }

    private string DatabasePassword
    {
        get
        {
            var context = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity.ApplicationContext;
            Account accounts = AccountStore.Create(context)
                .FindAccountsForService("PatientPortal")
                .FirstOrDefault(x => x.Username == "systemUser");

            if (accounts == null)
            {
                accounts = new Account("systemUser");
                accounts.Properties["db"] = System.Guid.NewGuid().ToString();
                AccountStore.Create(context).Save(accounts, "PatientPortal");
            }

            return accounts.Properties["db"];
        }
    }
}