获取当前壁纸

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"))

【讨论】:

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

android 获取当前壁纸的Drawable对象或者Bitmap。如何获取这张图片的ID或者名称。

perl 在windows上获取当前桌面壁纸

如何获取桌面壁纸的hdc,注意是壁纸,不包括图标,我其实是想做windows动态壁纸的程序

VC++如何获取并保存桌面背景?

在 ios 中以编程方式获取墙纸

Python静态网页爬取:批量获取高清壁纸