В моем приложении я хочу показать ВСЕ виджеты домашнего экрана. Мой код выглядит следующим образом:Как отобразить все домашние виджеты на домашнем экране
mWidgetInfoList = AppWidgetManager.getInstance(getActivity()).getInstalledProviders();
int count = 0;
for (AppWidgetProviderInfo one: mWidgetInfoList) {
Log.d(TAG, "onViewCreated, widget " + count + ": " + one.label + ", " + one.toString());
count++;
}
Это работает почти нормально. Вопрос: getInstalledProviders()
просто возвращает неполный список. Например, в моем Samsung Note3 (Android 5.0) два виджета, не возвращенные getInstalledProviders()
, являются «S Planner», которые представляют собой два виджетов календаря размера, как показано Samsung TouchWiz.
Но есть еще один виджет, не показанный TouchWiz, который является «Календарь». Log показывает, что, как представляется, на самом деле сама S Planner:
05-04 16:23:12.977 30699-30699/com.lxj.simplehome D/WidgetListFragment﹕ onViewCreated, widget 16: Calendar, AppWidgetProviderInfo(provider=ComponentInfo{com.sec.android.widgetapp.SPlannerAppWidget/com.sec.android.widgetapp.SPlannerAppWidget.EasyWidget.EasyCalendarAppWidgetProvider})
Итак, как получить полный список (с разными размерами)?
На моем телефоне этот файл не существует, а другой, похоже, тот, который вы упоминаете: data/data/com.sec.android.app.launcher/databases/launcher.db. Однако он просто содержит 3 таблицы: android_metadata, appOrder, любимый. Ни один из них не выглядит как список виджетов. Ваш скриншот выглядит как «избранное» на моем телефоне. – wizardlee