我有两个项目 - 一个PCL(个人资料7)和一个Android应用程序(以API为目标......但另外我希望它以10为目标)。
PCL已经从Nuget安装了akavache。 Android应用已安装akavache.sqlite3。对于后者,我还必须引用Rx-PlatformServices以便构建项目。
Android应用引用了PCL。
默认Android活动上有一个按钮,如下所示:
button.Click += async (sender, e) =>
{
var d = new DataService();
await d.SaveData();
var ss = await d.LoadData();
button.Text = ss;
};
PCL具有以下代码。
public class DataService
{
private IBlobCache blobStore;
public DataService()
{
BlobCache.ApplicationName = "DamienApp";
this.blobStore = BlobCache.UserAccount;
}
public async Task SaveData()
{
var data = new Person {Name = "Sienna", Age = 3};
await this.blobStore
.InsertObject<string>("mykey", JsonConvert.SerializeObject(data));
}
public async Task<string> LoadData()
{
var data = await this.blobStore.GetObjectAsync<string>("mykey");
return data;
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
按下按钮我发出以下错误。
[mono] Unhandled Exception:[mono] SQLite.SQLiteException:不能 打开数据库文件:BlobCache / userblobs.db(CannotOpen)[mono] at SQLite.SQLiteConnection..ctor(System.String databasePath, SQLiteOpenFlags openFlags,Boolean storeDateTimeAsTicks)[0x0006d] in /Users/paul/github/Akavache/Akavache.Sqlite3/SQLite.cs:125 [mono]
在SQLite.SQLiteConnectionWithoutLock..ctor (SQLite.SQLiteConnectionString connectionString,SQLiteOpenFlags 标志)[0x00000] in /Users/paul/github/Akavache/Akavache.Sqlite3/SQLiteAsync.cs:344 SQLite.SQLiteConnectionPool + Entry..ctor中的[mono] (SQLite.SQLiteConnectionString connectionString,SQLiteOpenFlags 标志)[0x0000d] in /Users/paul/github/Akavache/Akavache.Sqlite3/SQLiteAsync.cs:330 [mono] at SQLite.SQLiteConnectionPool + c__AnonStorey14。&lt;&gt; m__25 (Int32 _)[0x00000] in /Users/paul/github/Akavache/Akavache.Sqlite3/SQLiteAsync.cs:309 [单声道] System.Linq.Enumerable + c__Iterator10`2 [System.Int32,SQLite.SQLiteConnectionPool + Entry] .MoveNext()[0x00000] in:0 [mono] at System.C
我想知道这是否是某种安全问题。这都是我可以访问root的手机(Galaxy note 2)。
有什么想法吗?
提前致谢。
答案 0 :(得分:1)
距您提出这个问题已有一百万年了,但您可能没有设置应用程序名称:
BlobCache.ApplicationName = "MyAppName";