Database design MvvmCross.Platform.Exceptions.MvxException::Xamarin.Social.Accounts(权限被拒绝)-SQLCipher
在Android应用程序上使用带MvvmCross的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帐户所需权限的任何可能性-这也
- 在Manifest.xml文件上添加各种权限,以允许SqlCipher写入设备。(经过一定量的研究后,只有在向设备上的SD卡写入数据时,才需要执行此操作)
- 查看了访问该公司SqlCipher帐户所需权限的任何可能性-这也不是问题,因为我们在项目中添加了必要的dll李>
- 所有对必要文件和包的引用似乎都在那里,并且与当前上下文是最新的李>
公共对象连接
{
得到
{
锁(连接锁)
{
返回连接;
}
}
}
公共数据库上下文服务()
{
_连接=新的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"];
}
}
}