Установка живых обоев программно - PullRequest
22 голосов
/ 28 января 2011

Можно ли установить живые обои, используя несколько строк кода. Например, я хочу сообщить своим пользователям, что живые обои доступны «нажмите здесь, чтобы установить их».

Ответы [ 2 ]

32 голосов
/ 06 ноября 2012

Теперь есть два способа сделать это, поскольку Jelly Bean позволяет напрямую устанавливать живые обои. Этот стандартный код выберет лучший метод из доступных.

Intent i = new Intent();

if(Build.VERSION.SDK_INT > 15){
    i.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);

    String p = HypercaneWallpaperService.class.getPackage().getName();
    String c = HypercaneWallpaperService.class.getCanonicalName();        
    i.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName(p, c));
}
else{
    i.setAction(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER);
}
getActivity().startActivityForResult(i, 0);
26 голосов
/ 28 января 2011

Хорошо, просто я перестал получать отрицательные отзывы за устаревший ответ. См. Ответ об ошибке 454 ниже для более надежного решения, которое отправит пользователя непосредственно на экран предварительного просмотра обоев на устройствах Jelly Bean и выше.

========================================

Вот как запустить средство выбора обоев, из которого пользователь может выбрать свои обои. Тост - это просто способ объяснить пользователю, что происходит.

Toast toast = Toast.makeText(this, "Choose '<WALLPAPER NAME>' from the list to start the Live Wallpaper.",Toast.LENGTH_LONG);
toast.show();

Intent intent = new Intent();
intent.setAction(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER);
startActivity(intent);
...