Я пытаюсь создать приложение, которое может обращаться к защищенной базе данных и изменять ее в пределах /data/data/
. Этот процесс, очевидно, требует привилегий суперпользователя, и я тестирую это на рутованном устройстве. Общий код для доступа к базе данных SQLite завершен и работает с тестовой базой данных, расположенной в другом месте (в /sdcard/
).
Однако, когда я хочу, чтобы приложение получило доступ к базе данных в пределах /data/data/
, оно явно перестало работать, поскольку я пытаюсь получить к нему доступ как обычный пользователь. Я уже немного читал тему использования двоичного файла su
на Android, и, насколько я понимаю, он обычно используется только для выполнения команд оболочки.
Итак, моя первоначальная идея сделать эту работу состояла в том, чтобы просто изменить права доступа к файлу при запуске приложения и вернуть его обратно при выходе. Поэтому, прежде чем приступить к реализации этого в самом приложении, я использовал проводник, чтобы изменить разрешение на rw-rw-rw-
. Однако мое приложение все еще не смогло открыть базу данных.
Моя следующая идея состояла в том, чтобы использовать программу sqlite3
непосредственно из оболочки, но я обнаружил, что мой ПЗУ не поставляется с ним, поэтому мне пришлось бы распространять ее самостоятельно ( Titanium Backup кажется, делает это).
Однако есть кое-что, что заставляет меня задуматься, не может ли быть лучшего способа: я использую Root Explorer в качестве проводника, и у него есть встроенный способ просмотра любой База данных SQLite. Учитывая, что он, кажется, не поставляется с пользовательским двоичным файлом sqlite3
, и что мой телефон не имеет самого себя, доступ, кажется, осуществляется с использованием обычных инструментов Java. Но как тогда приложение получает права root?
Есть ли способ заставить приложение Android работать от имени пользователя root? Или я забыл установить что-то для разрешений ранее, что помешало мне получить к нему доступ? Или кто-нибудь знает, как Root Explorer делает это?