从不同的包访问数据库:出现错误:android.database.sqlite.SQLiteException:无法打开数据库文件

从不同的包访问数据库:出现错误:android.database.sqlite.SQLiteException:无法打开数据库文件,android,sqlite,Android,Sqlite,我有两种不同的申请 1.databaseSetup应用程序--database.apk 2.销售应用程序--salesApp.apk 我之所以这样是因为如果数据库损坏,只需要重新安装数据库。此时不需要安装应用程序 数据库设置应用程序包 /data/data/com.xont.app/databases/ 销售应用程序包-com.xont.controller 我想从不同的包访问数据库。这意味着销售应用程序包是com.xont.controller&数据库包是/data/data/com.x

我有两种不同的申请 1.databaseSetup应用程序--database.apk 2.销售应用程序--salesApp.apk

我之所以这样是因为如果数据库损坏,只需要重新安装数据库。此时不需要安装应用程序

数据库设置应用程序包

  /data/data/com.xont.app/databases/
销售应用程序包-com.xont.controller

我想从不同的包访问数据库。这意味着销售应用程序包是
com.xont.controller
&数据库包是
/data/data/com.xont.app/databases/

是否可以通过其他应用程序访问此文件夹?

对于这个问题,我从我的一个朋友那里得到了链接

在那里,我无法理解
共享一个用户ID并使用相同的签名密钥进行签名。
什么是用户ID和签名密钥

请告诉我什么是用户ID,SingingKey?&我怎样才能分享这两个呢

请帮我这个


提前感谢…

是的,如果两个应用程序使用相同的签名密钥签名并且都具有相同的用户ID,则可以从不同的应用程序访问文件夹

现在,对于用户ID和签名密钥

在安装时,Android为每个软件包提供一个不同的Linux用户ID。在该设备上软件包的生命周期内,该ID保持不变。在不同的设备上,同一个包可能有不同的UID;重要的是每个包在给定的设备上都有一个不同的UID

You can use the sharedUserId attribute in the AndroidManifest.xml's manifest tag of each package to have them assigned the same user ID.

如果可能的话,将数据库文件放在本地数据库目录或SD卡中,然后您可以从任何应用程序进行访问。但这是出于数据库的安全考虑。

如果您直接尝试从给定数据库的当前位置访问该数据库,则由于该文件的管理权限,它可能无法工作。您可以尝试将文件从当前位置复制到应用程序中的本地
数据库
文件夹,然后尝试使用相同的文件夹

谢谢你的信息。这对我很有帮助。现在我的用户名已经清楚了。再次感谢