2011-01-28 14 views
19

¿Es posible establecer un fondo de pantalla en vivo utilizando algunas líneas de código. Por ejemplo, quiero decirle a mis usuarios que hay un fondo de pantalla en vivo disponible "haga clic aquí para configurarlo".Configuración del fondo de pantalla en vivo programáticamente

+0

No creo que sea posible, puede iniciar el selector de fondos de pantalla pero no puede establecer el fondo de pantalla directamente. – theomega

+0

Así que supongo que mi próxima pregunta es ... ¿cómo iniciarla usando el código? – prashant

+0

Parece que es posible establecer el fondo de pantalla directamente: http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper-image – mahboudz

Respuesta

25

Muy bien, simplemente dejo de recibir votos atrasados ​​por una respuesta desactualizada. Consulte la respuesta del Error 454 a continuación para obtener una solución más robusta que enviará al usuario directamente a la pantalla de vista previa del fondo de pantalla en Jelly Bean y dispositivos superiores.

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

Así es como para iniciar el selector de fondo de pantalla, desde el cual el usuario puede seleccionar su fondo de pantalla. El brindis es solo una manera de explicarle al usuario lo que está sucediendo.

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); 
+0

¿Puedo cambiarlo sin interacción del usuario? ¿Puedes verificar este? http://stackoverflow.com/questions/13683464/set-live-wallpaper-programmatically-on-rooted-device-android – Naskov

+0

No, no puedes. La respuesta de Error454 está lo más cerca posible sin enrutar. Aunque no sé cómo lo harías con root. Tal vez preguntar por XDA. – Josh

30

Ahora hay dos maneras de lograr esto, ya que Jelly Bean proporciona una manera de establecer directamente el fondo de pantalla en vivo. Este código repetitivo elegirá el mejor método disponible.

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); 
+1

¿Y qué pasa si no tengo ese fondo de pantalla? Me refiero a cómo configurar otro fondo de pantalla usando mi aplicación? ¿Puedes verificar esto? http://stackoverflow.com/questions/13683464/set-live-wallpaper-programmatically-on-rooted-device-android – Naskov

+0

Mi fondo de pantalla del servicio estaba en otro paquete que el paquete principal. El paquete correcto que tuve que proporcionar fue: String String p = this.getContext(). GetPackageName(); – Twinsen

Cuestiones relacionadas