编辑:假设这个帖子有根电话。
我删除了我在此主题上发布的上一个问题,因为没有一个答案甚至接近回答这个问题。长话短说,我需要打开一个数据库并修改现有记录。我不想使用“辅助类”,因为我实际上想要查看和理解几行代码中发生的事情而不是包含100行代码的不必要的(对于我的目的)类。所以请不要告诉我“使用记事本教程”。我有,但它没有解释我需要什么。
为了简化,我正在做的是:
SQLiteDatabase myDB = this.openOrCreateDatabase("/data/data/MY_APP/databases/settings.db", MODE_PRIVATE, null);
myDB.execSQL("INSERT INTO my_table (SOME_FIELD) VALUES ('SOME_VALUE');");
这很好用。但是,如果我尝试在不同的路径中打开/编辑数据库,则会失败。例如,我可能想要编辑另一个应用程序使用的数据库。我怎样才能做到这一点?这是一个简单的权限问题?如果我的应用程序请求并获得root访问权限,它是否有效?
编辑:我可以在手机上安装大量可以编辑系统中每个数据库的应用程序,所以显然可以这样做。答案 0 :(得分:0)
正如this回答中所述,除非两个应用共享相同的用户ID且使用相同的签名密钥签名,否则您无法访问其他应用的数据库
答案 1 :(得分:0)
关于Android安全性,您无法直接访问其他人的应用数据库。如果其他应用程序创建ContentProvider,则可以通过其提供程序访问其DB(如果存在)。否则,AFAIK就没有办法了。
答案 2 :(得分:0)
我不知道你是否还在寻找这个答案。我当时也想做同样的事但却找不到任何东西。我知道我需要使用root进程,但是再一次找不到任何东西。我开始搞乱,只是尝试了很多随机的事情,最后找到了办法。
对我有用的简短版本是你需要以root身份更改数据库的权限,直接访问它(不是通过sqlite帮助程序),做任何你想做的事情,然后再将权限放回去。我在博客上详述了所有这些内容: