Intereting Posts
Как служба может прослушивать жесты / события касания? Crashlytics не деобфусцирует код Почему Android BottomNavigationView не отображается? Уровень шума запросов в Android Android: Как получить данные Google Fit с Wearable устройства? Показать детали элемента, нажатого в recycliewiew Функция отмены приложения Android (мультитач) Новый проект Android, названный в честь основной деятельности, вместо имени приложения Как я могу реализовать пользовательскую панель действий с пользовательскими кнопками в Android? Как приложение Android на экране Google TV отображается в области сверхсканирования (youtube может, почему я не могу?) Ошибка ADB и Genymotion: «Сервер adb устарел. Убийство … невозможно связать 'tcp: 5037' Сервер ADB не ACK " Когда следует использовать группы устройств GCM по сравнению с темами? Android: Как создать новую копию существующего растрового изображения? Android TextView отображает число до двух знаков после запятой только через XML Импортирование библиотеки игровых сервисов Google для мобильных объявлений

Android с несколькими контент-провайдерами (DLC)

Я хочу добавить дополнительный контент в свое приложение в качестве дополнительных баз данных. Должен ли я помещать их в apks и контент-провайдеры, чтобы они могли быть обновлены напрямую из Google Play или так же, как новые файлы db, загружаемые прямо в приложение.

Моя проблема с методом content-provider / apk заключается в том, что все они должны быть объявлены в манифесте android, и у меня может быть несколько баз данных, даже сотни, поэтому в моем манифесте потребуется 100% объявлений контент-провайдеров, даже если пользователь может Есть только пара или даже никто из них.

Если есть способ, я могу генерировать манифест динамически? Или загрузите контент-провайдеров за пределы манифеста?

благодаря

Я думаю, что самый чистый способ сделать это – иметь один уникальный ContentProvider для всех ваших db-файлов.

Вы должны создать свой выбор URI для базы данных.

Например: content://com.your.package/a_db_file/something/things/5

Затем при реализации вашего ContentProvider проанализируйте Uri, чтобы получить сегмент a_db_file , откройте соответствующий файл db, затем выполните необходимую работу в соответствии с остальными сегментами.

Возможно, вам понадобится метод getCorrectDb(String a_db_file) . Внутри этого метода вы должны сделать правильный вызов sqlLiteOpenHelper, который надлежащим образом соответствует требуемому файлу db.

Также взгляните на UriMatcher , это может быть полезно для вас. 🙂

В конце вы должны иметь что-то вроде:

 @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // TODO : Parse uri to get a_db_file string. SQLiteDatabase database = getCorrectDb(a_db_file); // TODO : get cursor from db according to other segments of uri. return cursor. } 

Я бы использовал один контент-провайдер, чтобы все упростилось, и используйте команду sql «attach database».