2016-05-31 9 views
0

Ich entwickle eine Anwendung, die Hintergrundbilder von com.android.launcher3 Paket ausklappbaren Ressourcen setzt. Irgendwann muss ich überprüfen, ob das Hintergrundbild richtig eingestellt ist, damit ich zu einem anderen Schritt weitergehen kann.Android - So erhalten Sie aktuelle Hintergrundbild Name

Nach einigen Recherchen in SO und Googeln konnte ich keine Informationen über den aktuellen Hintergrundnamen finden.

Hier ist, wie ich die ziehbar gesetzt, was ich habe kein Problem:

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(); 
    } 

Ich kann auch das aktuelle Wallpaper als ziehbar erhalten:

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

aber ich habe es nicht geschafft zu bekommen aktueller Hintergrundname

Ich brauche Hilfe.

Vielen Dank im Voraus.

Antwort

-1

Ich würde versuchen, diese zwei Möglichkeiten:

1. wallpaperManager Mit

Sie shouold der Lage sein, die Informationen zu erhalten mit diesem:

wallpaperManager.getWallpaperInfo(); 

Dies wird ein WallpaperInfo Objekt zurück, die enthält alle Daten zum Hintergrundbild.

Weitere Informationen https://developer.android.com/reference/android/app/WallpaperManager.html

2. Abrufen der ziehbar Datei

Sie auch die URI des ziehbar wie diese versuchen können, erhalten:

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

und nutzen Sie die Dateinamen von dort.

Ich hoffe, es hilft Ihnen.

+0

.getWallpaperInfo(); wird null sein, wenn das aktuelle Hintergrundbild kein Live-Hintergrundbild ist. Für deine zweite Antwort; Ich habe das Zeichen nicht in meiner Ressource. Es kann von einer anderen Paketressource gezeichnet werden, so dass ich seine R-Klasse nicht erreichen kann. –