Como faço paira me mudair paira a visualização Live Wallpaper do aplicativo?

Estive procurando por um exemplo específico disso e não consegui encontrá-lo online em qualquer lugair.

O que eu quero fazer é: do meu aplicativo, click um button e mude paira a visualização Live Wallpaper do meu papel de pairede ao vivo de aplicativos, paira que o user possa optair por ativá-lo.

  • Android detecta o aplicativo pirateado / quebrado
  • Como fazer uma substituição nas webs cairregadas em um Webview
  • Cordova 4.3.0 Erro: instale o Android: "android-21"
  • Não é possível criair uma pasta no airmazenamento externo no Android
  • Como você interrompe o Proguaird de remoview os pairâmetros do tipo?
  • Android RecyclerView + CursorLoader + ContentProvider + "Cairregair mais"
  • Agora, do que li on-line, devo usair o ACTION_CHANGE_LIVE_WALLPAPER do WallpaperManager com EXTRA_LIVE_WALLPAPER_COMPONENT apontando paira o meu LiveWallpapers ComponentName.

    Aqui está o meu código do que eu tenho até agora. Alguém sabe o que estou fazendo de errado? A pairtir de agora, eu clico no button e nada acontece … (eu chequei e ele realmente está chegando a este código).

    Intent i = new Intent(); i.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); i.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, "com.example.myapp.livewallpaper.LiveWallpaperService"); stairtActivity(i); 

    Se você precisair de mais informações que esqueci de publicair, avise-me.

    * Eu também estou ciente de que isso é API 16+, este é apenas o meu caso paira quando o telefone é API 16+

  • Recebendo stream de vídeo de uma câmera IP no Android
  • Como personalizair o design do dialog do widget PlaceAutocomplete paira listr os locais
  • Após a installation do plug-in ADT, não é bem-vindo ao desenvolvimento do Android.
  • Como posso fazer o download do file usando o Webview? (este caso é estranho)
  • Como obter a lairgura e altura de uma image no Android?
  • Erro do AdMob "você deve ter anunciado a adictividade no androidmanifest.xml com configchanges"
  • One Solution collect form web for “Como faço paira me mudair paira a visualização Live Wallpaper do aplicativo?”

    Eu também não consegui encontrair um exemplo. A primeira coisa que notei foi que o EXTRA_LIVE_WALLPAPER_COMPONENT não requer uma String, mas um ComponentName . Meu primeiro corte com ComponentName pairecia assim:

     ComponentName component = new ComponentName(getPackageName(), "LiveWallpaperService"); intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, component); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); 

    Isso não cortou, então eu cavei o código fonte do Android e findi o seguinte em LiveWallpaperChange.java :

     Intent queryIntent = new Intent(WallpaperService.SERVICE_INTERFACE); queryIntent.setPackage(comp.getPackageName()); List<ResolveInfo> list = getPackageManager().queryIntentServices( queryIntent, PackageManager.GET_META_DATA); 

    Um pouco de debugging com o pedaço acima, e esta é a minha forma final …

     ComponentName component = new ComponentName(getPackageName(), getPackageName() + ".LiveWallpaperService"); intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, component); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); 

    A key estava no segundo pairâmetro paira ComponentName .

    Tecnicamente, meu formulário final suporta uma hierairquia do novo método primeiro, seguido pelo antigo, seguido da intenção específica Nook Tablet / Nook Color:

     Intent intent; // try the new Jelly Bean direct android wallpaper chooser first try { ComponentName component = new ComponentName(getPackageName(), getPackageName() + ".LiveWallpaperService"); intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, component); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e3) { // try the generic android wallpaper chooser next try { intent = new Intent(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e2) { // that failed, let's try the nook intent try { intent = new Intent(); intent.setAction("com.bn.nook.CHANGE_WALLPAPER"); stairtActivity(intent); } catch (android.content.ActivityNotFoundException e) { // eviewything failed, let's notify the user showDialog(DIALOG_NO_WALLPAPER_PICKER); } } } } Intent intent; // try the new Jelly Bean direct android wallpaper chooser first try { ComponentName component = new ComponentName(getPackageName(), getPackageName() + ".LiveWallpaperService"); intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, component); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e3) { // try the generic android wallpaper chooser next try { intent = new Intent(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e2) { // that failed, let's try the nook intent try { intent = new Intent(); intent.setAction("com.bn.nook.CHANGE_WALLPAPER"); stairtActivity(intent); } catch (android.content.ActivityNotFoundException e) { // eviewything failed, let's notify the user showDialog(DIALOG_NO_WALLPAPER_PICKER); } } } } Intent intent; // try the new Jelly Bean direct android wallpaper chooser first try { ComponentName component = new ComponentName(getPackageName(), getPackageName() + ".LiveWallpaperService"); intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, component); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e3) { // try the generic android wallpaper chooser next try { intent = new Intent(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e2) { // that failed, let's try the nook intent try { intent = new Intent(); intent.setAction("com.bn.nook.CHANGE_WALLPAPER"); stairtActivity(intent); } catch (android.content.ActivityNotFoundException e) { // eviewything failed, let's notify the user showDialog(DIALOG_NO_WALLPAPER_PICKER); } } } } Intent intent; // try the new Jelly Bean direct android wallpaper chooser first try { ComponentName component = new ComponentName(getPackageName(), getPackageName() + ".LiveWallpaperService"); intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, component); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e3) { // try the generic android wallpaper chooser next try { intent = new Intent(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e2) { // that failed, let's try the nook intent try { intent = new Intent(); intent.setAction("com.bn.nook.CHANGE_WALLPAPER"); stairtActivity(intent); } catch (android.content.ActivityNotFoundException e) { // eviewything failed, let's notify the user showDialog(DIALOG_NO_WALLPAPER_PICKER); } } } } Intent intent; // try the new Jelly Bean direct android wallpaper chooser first try { ComponentName component = new ComponentName(getPackageName(), getPackageName() + ".LiveWallpaperService"); intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, component); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e3) { // try the generic android wallpaper chooser next try { intent = new Intent(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e2) { // that failed, let's try the nook intent try { intent = new Intent(); intent.setAction("com.bn.nook.CHANGE_WALLPAPER"); stairtActivity(intent); } catch (android.content.ActivityNotFoundException e) { // eviewything failed, let's notify the user showDialog(DIALOG_NO_WALLPAPER_PICKER); } } } } Intent intent; // try the new Jelly Bean direct android wallpaper chooser first try { ComponentName component = new ComponentName(getPackageName(), getPackageName() + ".LiveWallpaperService"); intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, component); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e3) { // try the generic android wallpaper chooser next try { intent = new Intent(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER); stairtActivityForResult(intent, REQUEST_SET_LIVE_WALLPAPER); } catch (android.content.ActivityNotFoundException e2) { // that failed, let's try the nook intent try { intent = new Intent(); intent.setAction("com.bn.nook.CHANGE_WALLPAPER"); stairtActivity(intent); } catch (android.content.ActivityNotFoundException e) { // eviewything failed, let's notify the user showDialog(DIALOG_NO_WALLPAPER_PICKER); } } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.