1

我正在为我们公司开发一个 Android 应用程序,每次启动手机时都会将壁纸设置为特定的公司壁纸。最好检查墙纸是否已更改,而不是运行代码来更改墙纸。

有没有办法从当前壁纸中获取识别信息(例如文件名等)?

WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);
WallpaperInfo wallpaperInfo = wallpaperManager.getWallpaperInfo();

返回. null_wallpaperInfo

壁纸更换代码:

public static void setWallpaper(Context context) {

    // Has wallpaper changed?
    if (/*--wallpaperNotChanged--*/) {
        return;
    }

    try {

        // Setup
        Drawable drawable = context.getResources().getDrawable(R.drawable.test);
        DisplayMetrics displayMetrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);

        // Get display sizes
        windowManager.getDefaultDisplay().getMetrics(displayMetrics);

        // Create Bitmap
        Bitmap unscaledWallpaper = BitmapFactory.decodeResource(context.getResources(), R.drawable.test);
        Bitmap wallpaper = Bitmap.createScaledBitmap(unscaledWallpaper, displayMetrics.widthPixels, displayMetrics.heightPixels, true);

        // Set wallpaper
        wallpaperManager.setBitmap(wallpaper);

    } catch (Exception e){
        Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
    }
}
4

2 回答 2

1

请阅读此获取当前壁纸。并获取当前壁纸绝对路径

final Drawable wallpaperManager = wallpaperManager.getDrawable();

有关更好的信息,您可以访问:
https ://developer.android.com/reference/android/app/WallpaperInfo.html

于 2015-07-29T13:15:03.137 回答
0

WallpaperManager API 参考

public WallpaperInfo getWallpaperInfo ()

这里说:

如果当前壁纸是动态壁纸组件,则返回关于该壁纸的信息。否则,如果是静态图片,则直接返回null

您的背景中必须有一张静态图片壁纸,而不是动态壁纸。

于 2015-09-09T13:25:57.513 回答