让活动出现在’壁纸选择器’中

我希望我的活动出现在您尝试从主屏幕选择壁纸时看到的活动列表(画廊,动态壁纸等)中。

我假设这是用意图完成但似乎无法find一个有效。 我能find的最接近的是:

 

但这不起作用,似乎用于别的东西。

这应该是您想要的intent-filter:

     

定义在这里: http : //developer.android.com/reference/android/content/Intent.html#ACTION_SET_WALLPAPER

(DEFAULT类别是意图的标准语法。)

当您从主屏幕点击“壁纸”时popup的“选择壁纸”对话框下的列表在大多数手机上都有三个条目(我检查了股票和HTC Sense):

  • 动态壁纸
  • 画廊
  • 壁纸(或:HTC壁纸)

当我在HTC Sense的主屏幕上按“壁纸”时,我得到:

 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) 

有货时:

 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) 

当我在库存时点击“壁纸”时:

 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) 

你需要使用android.intent.action.SET_WALLPAPER。 也许你忘了其他一些实现细节,比如

  

所以选择者可以拿起它? 看看Photostream的源代码(http://code.google.com/p/apps-for-android/source/browse/trunk/#trunk/Photostream)。 Romain Guy让它发挥作用。

基本上,您不能将活动设置为壁纸。 您必须改为创建Live Wallpaper ,并使用CanvasSurfaceView上绘制内容。 您可以自己创建视图,以便手动在canvas上绘制它们,但这有点棘手,在大多数情况下不是您想要的。