2011-08-31 1 views
1

Comment définir un papier peint en direct par programme. Je veux définir un papier peint en direct spécifié pour mon appareil. J'imite le LiveWallpaperPreview.java qui est dans l'application LivePicker. Mon code est:comment définir un papier peint en direct par programme?

setLiveWallpaperClick public void (Voir v) {

Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE); 
    intent.setClassName("com.android.wallpaper", "com.android.wallpaper.galaxy.GalaxyWallpaper"); 
try { 
    mWallpaperManager.getIWallpaperManager().setWallpaperComponent(
      intent.getComponent()); 

} catch (RemoteException e) { 
    e.printStackTrace(); 
    // do nothing 
} catch (RuntimeException e) { 
    e.printStackTrace(); 
} 
finish(); 

} Et l'autorisation dans le manifest.xml est:

<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" /> 
    <uses-permission android:name="android.permission.BIND_WALLPAPER" /> 
    <uses-permission android:name="android.permission.SET_WALLPAPER" /> 

Mais il ne peut pas fonctionner mon application. Le code est-il correct?

+0

Remplacez-vous le fond d'écran actuel avec le papier peint souhaité? Par exemple, si vous avez un autre fond d'écran téléchargé et vous connaissez le nom du paquet hes, pouvez-vous définir celui-ci via votre application? – Naskov

Répondre

3

Merci! J'ai trouvé la cause première: Le code est bon. Mais l'apk doit être poussé vers le répertoire/system/app, cela peut marcher. Si l'apk est installé dans/data/app, il ne peut pas fonctionner. Je pense qu'il y a des permissions différentes entre/system/app et/data/app.

+0

alors quelle est la solution ?? – Fakher

0

utilisez le code suivant pour définir le papier peint sur mesure en direct:

intention Intention = new intention (WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intention.putExtra (WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName (this, MyWallpaperService.class)); startActivity (intention);

avec autorisation supplémentaire suggéré ci-dessus par @Judy

ici MyWallpaperService est un service personnalisé papier peint.

Questions connexes