2010-09-25 11 views
7

Quiero que mi actividad aparezca en la lista de actividades (galería, fondos de pantalla animados, etc.) que ve cuando intenta elegir un fondo de pantalla de la pantalla de inicio.Hacer que la actividad aparezca en el "selector de fondos de pantalla"

Supongo que esto se hace con los intentos, pero parece que no puede encontrar uno que funcione. El más cercano que puedo encontrar es:

<action android:name="android.intent.action.ACTION_SET_WALLPAPER> 

pero eso no funciona y parece ser utilizado para otra cosa.

Respuesta

14

Esta debe ser la intención de filtro que desea:

<intent-filter> 
    <action android:name="android.intent.action.SET_WALLPAPER" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

define aquí: (. La categoría por defecto es una sintaxis estándar para las intenciones) http://developer.android.com/reference/android/content/Intent.html#ACTION_SET_WALLPAPER

+0

¡Gracias! Y sí, no puse la categoría DEFAULT en todo bien ahora. – Kman

0

Básicamente, no puede establecer actividades como fondo de pantalla. En su lugar, debe crear un Live Wallpaper y dibujar su contenido en un SurfaceView usando un Canvas. Puede crear vistas usted mismo para dibujarlas en el lienzo manualmente, pero eso es un poco complicado y en la mayoría de los casos no es lo que desea.

+0

Lo siento, quizás no fui lo suficientemente claro. No quiero establecer una actividad como fondo de pantalla. Quiero que mi aplicación/actividad sea un elemento que aparezca en la lista debajo del cuadro de diálogo "Seleccionar fondo de pantalla" que aparece al hacer clic en "fondos de pantalla" desde la pantalla de inicio. – Kman

1

La lista bajo 'seleccione fondo de pantalla del cuadro de diálogo que aparece al hacer clic en "fondos de pantalla" desde la pantalla de inicio tiene tres entradas en la mayoría de los teléfonos (comprobé stock y HTC Sense):

  • Fondos de pantalla en
  • Galería
  • Fondos (o: fondos de pantalla HTC)

Cuando presiono 'Fondos' desde la pantalla de inicio en HTC Sense me sale:

09-26 20:17:58.901: INFO/ActivityManager(104): Starting activity: Intent { act=android.intent.action.SET_WALLPAPER_DIALOG cmp=com.htc.launcher/.WallpaperChooserDialog (has extras) } 
09-26 20:17:59.301: INFO/ActivityManager(104): Displayed activity com.htc.launcher/.WallpaperChooserDialog: 353 ms (total 353 ms) 

Cuando en existencias :

09-26 20:19:41.231: INFO/ActivityManager(86): Starting activity: Intent { act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras) } 
09-26 20:19:41.571: INFO/ActivityManager(86): Displayed activity android/com.android.internal.app.ChooserActivity: 294 ms (total 294 ms) 

y cuando n hago clic a través de fondos de pantalla '', cuando en existencia:

09-26 20:19:51.101: INFO/ActivityManager(86): Starting activity: Intent { act=android.intent.action.SET_WALLPAPER flg=0x3000000 cmp=com.android.launcher/com.android.launcher2.WallpaperChooser } 
09-26 20:19:51.581: INFO/ActivityManager(86): Displayed activity com.android.launcher/com.android.launcher2.WallpaperChooser: 463 ms (total 463 ms) 

Es necesario utilizar android.intent.action.SET_WALLPAPER. Tal vez se olvidó de algunos otros detalles de implementación como

<category android:name="android.intent.category.DEFAULT" /> 

para que el selector pudiera recogerlo? Eche un vistazo al código fuente de Photostream (http://code.google.com/p/apps-for-android/source/browse/trunk/#trunk/Photostream). Romain Guy lo tiene funcionando.

Cuestiones relacionadas