gpt4 book ai didi

c# - 如何在 Xamarin 应用程序和 Java Android 应用程序之间共享 sqlite 数据库

转载 作者:搜寻专家 更新时间:2023-11-01 09:42:07 24 4
gpt4 key购买 nike

正如标题所说,我想在用 Java 编写的 Android 应用程序和使用 Xamarin.C# 编写的应用程序之间共享一个 Sqlite 数据库。我可以在两个 Java 应用程序 ( With the help of this question ) 之间成功共享数据库,但是当我在 Xamarin 中尝试相同的操作时,出现以下错误:

Android.Database.Sqlite.SQLiteCantOpenDatabaseException:未知错误(代码 14):无法打开数据库

我认为我有两个问题。

  1. 我没有正确设置共享用户 ID。目前我将以下属性放在我的主要 Activity 之上。

    [注册("my.user.id")]

    我尝试在 Manifest 文件中使用 android:sharedUserId="my.user.id" 但它会引发错误并且不会部署到我的设备。

  2. 我不知道应用程序的整个签名是如何工作的。因此,也许我的设备将这两个应用程序视为来自每个设备的不同发布者,并且不允许这两个应用程序共享上下文。

编辑:
只是想添加我如何使用相同的证书签署两个应用程序以供将来引用。

Android 证书是 noramlly "C:\Users\userName\.android\debug.keystore" 而 Xamarin 证书是 noramlly "C:\Users\userName\AppData\Local\Xamarin\Mono for Android\debug.keystore"。我首先构建了 Xamarin 应用程序,因此我将 debug.keystore 文件从 xamarin 文件夹复制到 android 应用程序。 (我确定它会以相反的方式工作,但还没有测试过)

最佳答案

Xamarin.Android 不通过 ApplicationAttribute 支持 SharedUserId。 (我想没有人提出过关于它的问题)

引用:Android.App.ApplicationAttribute

通过 list 添加您的共享用户 ID,它将正常工作:

例子:

<application android:allowBackup="true" android:sharedUserId="com.sushihangover" android:icon="@mipmap/icon" android:label="@string/app_name"></application>

注意:确保您手动卸载这两个应用程序,添加 sharedUserId,重建并重新安装这两个应用程序。

注意:确保您对 Java 和 Xamarin 应用程序使用相同的签名证书。

关于c# - 如何在 Xamarin 应用程序和 Java Android 应用程序之间共享 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39459598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com