开发者

Android - SQLite database access

开发者 https://www.devze.com 2023-04-11 04:08 出处:网络
EDIT: Assume a rooted phone for this post. I deleted a previous question I posted on this topic because none of the answers even came close to answering the question. Long story short, I need to open

EDIT: Assume a rooted phone for this post.

I deleted a previous question I posted on this topic because none of the answers even came close to answering the question. Long story short, I need to open a database and modify an existing record. I do not want to use a "helper class" because I actually want to see and understand what is going on in a few lines of code rather than an unnecessary (for my purposes) class that contains 100 lines of code. So please don't tell me to "use the notepad tutorial." I have, and it doesn't explain what I need.

To simplify, here is what I am doing:

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');");

This works very nicely. However it fails if I try to open/edit a database in a different path. For example I might want to edit a database that another app uses. How can I do this? Is it a simple matter of permissions? Should it wor开发者_如何学Ck if my app requests and gets root access?

EDIT: There are tons of apps I can install on my phone that are capable of editing every single database on the system so obviously this CAN be done.


Regarding Android security, you cannot access others' app DB directly. If other applications create ContentProvider then you can access theirs DBs (if exist) through its Providers. Otherwise, there's no way out AFAIK.


I don't know if you are still looking for this answer. I was looking to do the same but couldn't really find anything. I knew I needed to use root for the process, but again, couldn't find anything. I started messing around and just trying a lot of random things, and finally found a way to do it.

The short version that worked for me is you need to, as root, change the permissions of the database, access it directly (not through an sqlite helper), do whatever you wish, and then put the permissions back. I detail all of this on my blog:

http://rratmansky.wordpress.com/?p=259&preview=true

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号