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

Из-за некоторых комментариев, вопрос в двух словах:

Как виджет может получить доступ к своей собственной базе данных sqlite?

Почему это не работает с простым классом DatabaseAdapter?

Требуются ли определенные разрешения?

Существуют ли ограничения, наложенные на Remotevie / AppWidgetProvider для доступа к собственной базе данных (без ContentProvider)


Вопрос кажется простым, но детали следуют, если кто-то действительно хочет знать, почему я спрашиваю:

У меня есть следующая настройка:

  1. У меня нормальное приложение для Android, которое поставляется с довольно большим количеством HTML-страниц в папке с ресурсами. Из-за размера приложения предпочтительным местом установки является внешняя SD-карта. Это прекрасно работает.

  2. Это означает, что приложение не может содержать виджет, потому что виджет должен находиться во внутреннем ПЗУ.

  3. Вместо этого виджет будет считываться из базы данных приложения на внешней SD-карте. Это достигается с помощью ContentProvider / ContentProviderClient.

Пока это работает нормально.

Теперь этот виджет должен поддерживать некоторые постоянные параметры конфигурации на основе каждого экземпляра. Поэтому класс AppWidgetProvider не может использовать настройки, потому что они будут применяться для каждого класса.

Поэтому, чтобы сохранить (довольно сложные) данные конфигурации экземпляра, я хочу, чтобы класс AppWidgetProvider имел свою собственную небольшую базу данных sqlite.

Теперь, когда я могу получить доступ к базе данных приложения из виджета с помощью contentprovider, кажется, что виджет не может получить доступ к своей собственной базе данных. У меня есть класс адаптера базы данных в проекте виджета; Внутри AppWidgetProvider у меня есть Контекст, но никакого письма, похоже, не происходит.

Вызовы к адаптеру базы данных проходят через OK (я сделал несколько протоколирования), но когда я просматриваю таблицы, запись не происходит.

Почему это? Мне действительно нужен ContentProvider внутри виджета для доступа к базе данных виджета? Я не хочу идти по этой дороге, потому что, когда я реализовал доступ к базе данных приложений из виджета, мне пришлось пройти через ContentProviderClient вместо ContentProvider. Это было бы очень громоздким. Поскольку мне нужно немного больше, чем CRUD acccess, это, очевидно, связано с созданием пользовательского ContentProviderClient. В документах android четко указано, что «вам не нужен провайдер для использования базы данных SQLite, если использование полностью в вашем собственном приложении». Итак, IMHO, это означает, что виджет может напрямую обращаться к своей базе данных? Нужны ли мне специальные разрешения? Я подозреваю, что, поскольку виджеты работают как RemoteViews в процессе работы с домашними экранами, доступ к db каким-то образом ограничен? Любые мысли, идеи, намеки на это?

Я предлагаю использовать сервис, если больше ничего не работает для вас. Это обычная вещь, чтобы иметь сервис для виджета приложения.

Intereting Posts
Можно ли хранить статическую ссылку на SharedPreferences и ее редактор? В чем разница между / system / app и / data / app? Eclipse не может подключиться к диспетчеру активности на эмуляторе – HelloWorld не появляется Рисование на холсте с пользовательским взаимодействием немного отсталое Android перестает отправлять события onTouch Действие разрешения администратора Android-устройства не запускается Отображение файла формы и файла OSM в android в качестве карты Уникальный идентификатор приложения для Android Обновление вида сетки Динамически при удалении элемента (файла) ActionBarSherlock: программно отображать / скрывать кнопки Action Item посредством вызова метода Преобразовать значения секунд в часовые минуты? Конвертировать мобильное приложение jQuery в apk BroadcastReceiver пытается вернуть результат во время не упорядоченной передачи – PACKAGE_ADDED в Android Как реализовать трехсторонний конференц-звонок с чатом WebRTC для Android? Сетевое управление плагинами