2016-05-31 4 views
0

Je suis en train de développer une application qui définit les fonds d'écran de com.android.launcher3 package drawable resources. À un moment donné, j'ai besoin de vérifier si le fond d'écran est réglé correctement afin que je puisse passer à l'autre étape. Après quelques recherches sur SO et googling, je n'ai pas trouvé d'informations sur l'obtention du nom actuel du papier peint.Android - Comment obtenir le nom de fond d'écran en cours

Voici comment je régler la drawable que je n'ai aucun problème:

try { 
     WallpaperManager wallpaper_manager = WallpaperManager.getInstance(m_context); 

     Resources res  = m_context.getPackageManager().getResourcesForApplication("com.android.launcher3"); 
     int drawable_id  = res.getIdentifier(wallpaper_name, "drawable", "com.android.launcher3"); 
     Drawable drawable = res.getDrawable(drawable_id, null); 

     if(drawable != null) { 
      wallpaper_manager.setBitmap(((BitmapDrawable)drawable).getBitmap()); 
     } 

    } catch (PackageManager.NameNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

je peux obtenir le fond d'écran actuel comme drawable ainsi:

WallpaperManager wallpaper_manager = WallpaperManager.getInstance(m_context); 
Drawable drawable     = wallpaper_manager.getDrawable(); 

mais je ne l'ai pas réussi à obtenir nom actuel du papier peint.

J'ai besoin d'aide.

Merci d'avance.

Répondre

-1

Je voudrais essayer ce deux options:

1. À l'aide wallpaperManager

Vous shouold être en mesure d'obtenir les informations en utilisant ceci:

wallpaperManager.getWallpaperInfo(); 

Cela renverra un objet qui WallpaperInfo contient toutes les données sur le fond d'écran.

Plus d'informations https://developer.android.com/reference/android/app/WallpaperManager.html

2. Obtenir le fichier drawable

Vous pouvez également essayer d'obtenir l'URI du drawable comme ceci:

String imageUri = "drawable://" + R.drawable.image; 

Et obtenir le nom de fichier De là.

J'espère que ça vous aide.

+0

.getWallpaperInfo(); sera nul si le fond d'écran actuel n'est pas un fond d'écran en direct. Pour votre deuxième réponse Je n'ai pas le drawable dans ma ressource. C'est un drawable d'une autre ressource de paquetage donc je ne serai pas capable d'atteindre sa classe R. –