Size: a a a

2018 March 12

GK

Gregory Klyushnikov in Android Guards
Dmitry
Скажите, а можно как-то получить доступ к файлу с SQLite базой другого приложения, при том условии что оба приложения мои, но с разными applicationID. Про ContentProvider я знаю, но мне нужно именно скопировать файл с базой. Или это нереально?
По идее реально, если подписать оба приложения одним и тем же сертификатом
источник

D

Dmitry in Android Guards
Интересно, круто. Они и подписаны так сейчас =)
источник

GK

Gregory Klyushnikov in Android Guards
Гуглить в сторону getPackageContext
источник

KI

Konstantin Ivanov in Android Guards
источник

D

Dmitry in Android Guards
Спасибо! Суть в общем в том, что предстоит нетривиальная миграция данных из старой версии приложения в новое. Но новая версия пока в закрытой бете под другим ApplicationId. Нужно массово это оттестировать не заменяя приложение старое. Чтобы новая версия c другим applicationId как-то "увидела" базу старого приложения.
источник

D

Dmitry in Android Guards
Вот это похоже то что надо, спасибо, буду пробовать!
источник

D

Dmitry in Android Guards
Печалька :(

As a final note, if your database exists previous to setting the shared user id in the manifest, you will need to uninstall/reinstall the apps on a physical device, lest you will lock yourself out of your database (sqlite error 14). The emulator, on the other hand, might prove to be more forgiving. Bottom line, if your apps are published on the Android market, setting a shared user id in an afterthought will not work.

Не годится этот вариант, нужен доступ к уже существующей базе. Переуставливать ничего нельзя.
источник

KI

Konstantin Ivanov in Android Guards
а обновлять старое приложение можно?
источник

D

Dmitry in Android Guards
Ну можно, но тоже сильно мудрить с этим не хочется, ведь это только чтобы протестировать импорт
источник

D

Dmitry in Android Guards
Т.е. например делать конетнт провайдер для этого я нехочу, т.к. в конечном итоге у новой версии все равно будет прямой доступ к файлу с базой, когда придет время
источник

KI

Konstantin Ivanov in Android Guards
есть еще file provider
источник

GK

Gregory Klyushnikov in Android Guards
Так а если отдать новому приложению базу просто как файл?
источник

D

Dmitry in Android Guards
Сделать копирование файла с базой куда-нибудь на SD картку в старом приложении? А в новом указываем путь к файлу при импорте. В принципе это рабочий вариант. Все лучше чем ничего.
источник

GK

Gregory Klyushnikov in Android Guards
Вот так лучше не делать
источник

GK

Gregory Klyushnikov in Android Guards
Всё-таки к sdcard есть доступ у всех приложений
источник

D

Dmitry in Android Guards
ну это да. FileProvider посмотрю еще, спасибо за наводку
источник

GK

Gregory Klyushnikov in Android Guards
ещё можно попробовать что-нибудь провернуть с файловыми дескрипторами, которые можно класть в интенты
источник

D

Dmitry in Android Guards
А можно поподробнее, в чем трюк?
источник

GK

Gregory Klyushnikov in Android Guards
Dmitry
А можно поподробнее, в чем трюк?
источник

GK

Gregory Klyushnikov in Android Guards
я сам это никогда не пробовал, потому что не возникало такой необходимости, но по идее это должно позволять в том числе дать доступ к файлу из своей папки приложения кому-нибудь другому
источник