获取当前壁纸

18
我对Android编程还很陌生,请多包涵。
我想知道是否有一种方法可以在Android设备上检索当前的壁纸并将其保存到您应用程序代码中的变量中。
谢谢。

这里没有任何答案能够帮到我,但是下面的回答对我有用:https://dev59.com/urDla4cB1Zd3GeqP_aZT#53912364。它使用了WallpaperManager.getWallpaperFile方法。 - Kioshiki
3个回答

41

11
如果设置了动态壁纸,会发生什么? - S.D.
2
在这种情况下,我不知道会返回什么,但您可以调用“getWallpaperInfo”来检查它是否是动态壁纸:http://developer.android.com/reference/android/app/WallpaperManager.html#getWallpaperInfo()。 - android developer
在这种情况下,从我所看到的来看,将返回最后设置的壁纸。 - Paul
你知道这需要任何权限吗? - 今天春天
从Android 8.1版本开始,WallpaperManager.getDrawable()将需要READ_EXTERNAL_STORAGE权限,不幸的是,官方文档中没有提到这一点。 - Run
@QLocker 没错,但是当你执行上面的代码片段时,你会得到一个 SecurityException,这个 SecurityException 会告诉你要授予 READ_EXTERNAL_STORAGE 权限。 - Pritesh Vishwakarma

4
这是一个不错的方法:
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();

1
这一步更进一步,保存文件。当然,您需要异常处理,并且需要外部写入权限。
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"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接