获取当前壁纸
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或者名称。