Как читать базу данных другого приложения

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

Однако в моем java-коде, когда я пытаюсь открыть базу данных, я получаю ошибку

Android.database.sqlite.SQLiteException: невозможно открыть файл базы данных

Я пытаюсь открыть базу данных следующим образом:

SQLiteDatabase.openDatabase(PATH, null, SQLiteDatabase.OPEN_READONLY); 

Путь – это что-то вроде /data/data/com.xxx.xxx/databases/xx.db

Должен ли я читать базы данных других приложений, подобных этому, или есть другой способ?

UPDATE: Я также попытался сделать системное приложение в соответствии с рекомендацией в этом потоке. Push my apk to / system / app

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

ОС Android по умолчанию не позволяет приложениям обращаться к другим частным папкам. Чтобы иметь возможность читать файлы, находящиеся в другой папке приложений, также:

1) вам нужно, чтобы оба приложения были установлены с использованием одного и того же user id . Добавьте это в оба проявления:

 android:sharedUserId="com.xx.xx" 

2) Если другое приложение является сторонним приложением, тогда ваш единственный выбор – установить приложение в качестве системного приложения. Для этого вам нужен корневой телефон, и вам нужно установить system папку. И тогда вам нужно поместить ваше приложение в папку /system/app/ и перезагрузить телефон. Он должен быть установлен автоматически во время загрузки.

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

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

Это обойти безопасность Android, поэтому действуйте на свой страх и риск. Вы можете найти образец кода:

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