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

时间:2011-11-16 04:35:20

标签: android sqlite

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

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

databaseSetup应用程序包

  /data/data/com.xont.app/databases/

销售应用程序包 - com.xont.controller

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

Is it possible to access this folder different application?

对于那个问题,我从我的一个朋友Click

获得了链接

在那里,我无法理解share a user ID and are signed by the same signing key.什么是用户ID&西宁钥匙?

请有人告诉我什么是UserID,SingingKey? &安培;我该如何分享?

请帮助我......

提前致谢...

2 个答案:

答案 0 :(得分:3)

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

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

User IDs and File Access

在安装时,Android会为每个程序包提供不同的Linux用户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卡中,您可以从任何应用程序访问。但它关注数据库的安全问题。

答案 1 :(得分:2)

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