Доступ к базе данных из другого пакета: выдает ошибку: android.database.sqlite.SQLiteException: невозможно открыть файл базы данных - PullRequest
3 голосов
/ 16 ноября 2011

У меня есть два разных приложения 1. Приложение databaseSetup - database.apk 2. Приложение продаж - salesApp.apk

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

Пакет для базы данныхSetup приложения

  /data/data/com.xont.app/databases/

Пакет для приложения продаж - com.xont.controller

Я хочу получить доступ кБаза данных из другого пакета. Это означает, что пакет приложения для продажи - com.xont.controller, а пакет базы данных - /data/data/com.xont.app/databases/.

Is it possible to access this folder different application?

На этот вопрос я получил ссылку от одного из моих друзей Нажмите

Там я не смог понять share a user ID and are signed by the same signing key.Что такое идентификатор пользователя и ключ Sining?

Пожалуйста, кто-нибудь подскажет, что такое UserID, SingingKey?И как я могу поделиться обоими?

Пожалуйста, помогите мне в этом ...

Заранее спасибо ...

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

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

теперь для идентификатора пользователя и ключа подписи,

Идентификаторы пользователей и доступ к файлам

Во время установки Android присваивает каждому пакету отдельный идентификатор пользователя Linux. Идентификация остается неизменной в течение всего срока службы пакета на этом устройстве. На другом устройстве один и тот же пакет может иметь другой UID; важно то, что у каждого пакета есть определенный UID на данном устройстве.

You can use the sharedUserId attribute in the AndroidManifest.xml's manifest tag of each package to have them assigned the same user ID.

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

2 голосов
/ 16 ноября 2011

Если вы пытаетесь напрямую получить доступ к данной базе данных из ее текущего местоположения, она может не работать из-за административных прав на файл.Вы можете скопировать файл из текущего местоположения в локальную папку databases в приложении, а затем попробовать поработать над тем же.

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