正如标题所说,我希望在使用Java编写的Android应用程序和使用Xamarin编写的C#应用程序之间共享Sqlite数据库。我可以成功地在两个Java应用程序之间共享数据库(借助此问题的帮助),但是当我尝试在Xamarin中做同样的事情时,我遇到了以下错误:
Android.Database.Sqlite.SQLiteCantOpenDatabaseException:未知错误(代码14):无法打开数据库
我觉得我有两个问题。
1.我没有正确设置Shared UserId。目前,我在我的主活动上方放置了以下属性。
[Register("my.user.id")]
我尝试在清单文件中使用android:sharedUserId =“my.user.id”,但是那会引发错误,并且无法部署到我的设备。
2.我不知道整个应用程序签名是如何工作的。因此,我的设备可能会将两个应用程序视为来自每个设备的不同发布者,并且不允许两者共享上下文。
编辑:
只是想添加如何使用相同证书签名两个应用程序以供参考。
Android证书通常为“C:\Users\userName\.android\debug.keystore”,而Xamarin证书通常位于“C:\Users\userName\AppData\Local\Xamarin\Mono for Android\debug.keystore”。我首先构建了Xamarin应用程序,因此我从xamarin文件夹中复制了debug.keystore文件到android文件夹中。(我相信这样做也可以,但还没有测试过)
Android.Database.Sqlite.SQLiteCantOpenDatabaseException:未知错误(代码14):无法打开数据库
我觉得我有两个问题。
1.我没有正确设置Shared UserId。目前,我在我的主活动上方放置了以下属性。
[Register("my.user.id")]
我尝试在清单文件中使用android:sharedUserId =“my.user.id”,但是那会引发错误,并且无法部署到我的设备。
2.我不知道整个应用程序签名是如何工作的。因此,我的设备可能会将两个应用程序视为来自每个设备的不同发布者,并且不允许两者共享上下文。
编辑:
只是想添加如何使用相同证书签名两个应用程序以供参考。
Android证书通常为“C:\Users\userName\.android\debug.keystore”,而Xamarin证书通常位于“C:\Users\userName\AppData\Local\Xamarin\Mono for Android\debug.keystore”。我首先构建了Xamarin应用程序,因此我从xamarin文件夹中复制了debug.keystore文件到android文件夹中。(我相信这样做也可以,但还没有测试过)