2010-09-25 4 views
7

Я хочу, чтобы моя активность появлялась в списке мероприятий (галерея, живые обои и т. Д.), Которые вы видите, когда пытаетесь выбрать обои с главного экрана.Запустить активность в 'wallpaper chooser'

Я предполагаю, что это сделано намерениями, но, похоже, не найти тот, который работает. Самый близкий, который я могу найти, это:

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

но это не работает и, кажется, используется для чего-то еще.

ответ

14

Это должно быть намерение фильтра вы хотите:

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

Определено здесь: (. Категория DEFAULT стандартный синтаксис для намерений) http://developer.android.com/reference/android/content/Intent.html#ACTION_SET_WALLPAPER

+0

Спасибо! И да, я не стал ставить категорию DEFAULT во все хорошее сейчас. – Kman

0

В принципе, вы не можете устанавливать действия в качестве обоев. Вы должны создать Live Wallpaper вместо этого, и нарисуйте свой контент на SurfaceView, используя Canvas. Вы можете создавать представления самостоятельно там, чтобы рисовать их на холсте вручную, но это немного сложно, а в большинстве случаев не то, что вы хотите.

+0

Простите, может быть, я не был достаточно ясен. Я не хочу устанавливать активность в качестве обоев. Я хочу, чтобы мое приложение/мероприятие было элементом, указанным в диалоговом окне «выбрать обои из», которое появляется, когда вы нажимаете «обои» на рабочем столе. – Kman

1

В списке под заголовком «выберите обои из диалогового окна, которое появляется, когда вы нажимаете «обои» на главном экране, имеет три записи на большинстве телефонов (я проверил акции и 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) 

И whe п я нажимаю на «через обои», когда на складе:

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. Возможно, вы забыли некоторые другие детали реализации, такие как

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

так что выборщик мог забрать его? Посмотрите исходный код Photostream (http://code.google.com/p/apps-for-android/source/browse/trunk/#trunk/Photostream). Ромен Гай работает.

Смежные вопросы