Как я могу поместить виджеты и ярлыки на страницу просмотра?

Я внедрил ViewPager в своем собственном приложении Launcher для дома и добавил 5 страниц в ViewPager .

Теперь я хочу добавить виджеты на ViewPager экране и ярлыки приложений на отдельных страницах в моем ViewPager . Какой был бы лучший способ добиться этого?

Ярлыки приложений:

Вы можете указать установленные приложения:

 final PackageManager pm = getPackageManager(); //get a list of installed apps. List<ApplicationInfo> packages = pm .getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo packageInfo : packages) { Log.d(TAG, "Installed package :" + packageInfo.packageName); Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); }// the getLaunchIntentForPackage returns an intent that you can use with startActivity() } 

Если вам нужна дополнительная информация, например, значок приложения, проверьте это: Как получить список установленных приложений для Android и выбрать один для запуска

Затем вы можете добавить макет с ListView на страницу Fragment / Activity.

Добавьте в адаптер для ListView приложения, которые вы хотите, и события onClick, чтобы создать намерение их открыть.

Я думаю, что это лучший способ показать список приложений, иконки и т. Д.

Виджеты: я никогда не видел виджеты внутри приложения, но, согласно ответу ниже https://stackoverflow.com/a/8218587/327011, видимо, есть способ.

Если вы заинтересованы в чем-то совсем другом … вместо этого вы можете создать собственный экран и использовать его вместо обычного. Это не приложение.

Вот аналогичный вопрос (частично о виджетах ): какие-нибудь программы AppWidgetHost?

И вот учебник AppWidgetHost с главным образом рабочим примером. По крайней мере, это хорошая отправная точка.

Примечание: в строке 176 примера приведена опечатка:

 int appWidgetId = WidgetScreen.this.mAppWidgetHost.allocateAppWidgetId(); 

Следует заменить на

 int appWidgetId = mAppWidgetHost.allocateAppWidgetId();