获取当前壁纸

Posted

技术标签:

【中文标题】获取当前壁纸【英文标题】:Get current wallpaper 【发布时间】:2012-04-13 22:09:46 【问题描述】:

我对 android 编程很陌生,所以请耐心等待。

我想知道是否有一种方法可以检索 android 设备上的当前壁纸并将其保存到应用代码中的变量中。

谢谢

【问题讨论】:

这里的答案都没有帮助,但以下答案对我有用:***.com/a/53912364/647292。它使用 WallpaperManager.getWallpaperFile 方法。 【参考方案1】:
final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
final Drawable wallpaperDrawable = wallpaperManager.getDrawable();

【讨论】:

如果设置了动态壁纸会怎样? @S.D.在这种情况下,我不知道会返回什么,但您可以调用“getWallpaperInfo”来检查它是否是动态壁纸:developer.android.com/reference/android/app/… @S.D.在这种情况下,据我所知,最后设置的壁纸将被返回。 你知道这是否需要任何权限吗? 从 android 8.1 版本开始,WallpaperManager.getDrawable() 将需要 READ_EXTERNAL_STORAGE 权限,遗憾的是官方文档中没有提及。【参考方案2】:

这是这样做的好方法:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();

【讨论】:

【参考方案3】:

这更进一步并保存文件。您当然需要异常处理,并且需要外部写入权限。

import java.io.FileOutputStream;
import android.graphics.Bitmap;
import android.app.WallpaperManager;

WallpaperManager wmInstance = WallpaperManager.getInstance(context);

wmInstance
    .getDrawable()
    .getBitmap()
    .compress(Bitmap.CompressFormat.PNG, 100,
        new FileOutputStream("/storage/emulated/0/output.png"))

【讨论】:

以上是关于获取当前壁纸的主要内容,如果未能解决你的问题,请参考以下文章