Android - доступ к базе данных SQLite - PullRequest
0 голосов
/ 05 октября 2011

РЕДАКТИРОВАТЬ: Предположим, что этот пост имеет рутированный телефон.

Я удалил предыдущий вопрос, который я разместил в этой теме, потому что ни один из ответов даже близко не подошел к ответу на вопрос. Короче говоря, мне нужно открыть базу данных и изменить существующую запись. Я не хочу использовать «вспомогательный класс», потому что я действительно хочу видеть и понимать, что происходит в нескольких строках кода, а не ненужный (для моих целей) класс, который содержит 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-доступ?

РЕДАКТИРОВАТЬ: На моем телефоне можно установить множество приложений, способных редактировать каждую базу данных в системе, поэтому, очевидно, это МОЖНО сделать.

Ответы [ 3 ]

0 голосов
/ 05 октября 2011

Что касается безопасности Android, вы не можете напрямую обращаться к БД других приложений. Если другие приложения создают ContentProvider, вы можете получить доступ к их базам данных (если они есть) через его провайдеров. В противном случае, AFAIK нет выхода.

0 голосов
/ 05 апреля 2013

Я не знаю, ищите ли вы этот ответ. Я хотел сделать то же самое, но ничего не смог найти. Я знал, что мне нужно использовать root для этого процесса, но, опять же, не смог ничего найти. Я начал возиться и просто пробовать много случайных вещей, и наконец нашел способ сделать это.

Короткая версия, которая работала для меня, заключается в том, что вам нужно от имени root изменить права доступа к базе данных, получить к ней доступ напрямую (не через помощника sqlite), сделать все, что вы пожелаете, и затем вернуть разрешения обратно. Я подробно все это в своем блоге:

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

0 голосов
/ 05 октября 2011

Как упоминалось в этом ответе, вы не можете получить доступ к базе данных другого приложения, если оба приложения не имеют одинаковый идентификатор пользователя и не подписаны одним и тем же ключом подписи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...