2015-05-04 7 views
4

В моем приложении я хочу показать ВСЕ виджеты домашнего экрана. Мой код выглядит следующим образом:Как отобразить все домашние виджеты на домашнем экране

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}) 

Итак, как получить полный список (с разными размерами)?

ответ

0

Единственный способ, которым я знаю, - использовать root-доступ. Работа не всегда гарантирована (особенно если пользователь имеет собственный экран).

Существует база данных по адресу:

/data/data/com.android.launcher/databases/launcher.db

Эта база данных содержит строки для всех виджетов и значков на домашний экран. Вот пример моего:

Example database contents

+0

На моем телефоне этот файл не существует, а другой, похоже, тот, который вы упоминаете: data/data/com.sec.android.app.launcher/databases/launcher.db. Однако он просто содержит 3 таблицы: android_metadata, appOrder, любимый. Ни один из них не выглядит как список виджетов. Ваш скриншот выглядит как «избранное» на моем телефоне. – wizardlee

0

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

+0

На самом деле то, что я ищу, это способ отключить их, а не способ их запуска. Я могу отключить их с помощью 'setApplicationHidden', но сначала мне нужно получить их список. – andybalholm

+0

Я награждаю вас своей щедростью, так как ваш ответ был единственным новым в период щедрости. – andybalholm

 Смежные вопросы

  • Нет связанных вопросов^_^