我正在为我们公司开发一款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();
}
}
答案 0 :(得分:1)
请阅读get-current-wallpaper。并Get current wallpaper absolute path
final Drawable wallpaperManager = wallpaperManager.getDrawable();
有关更多信息,请访问:
https://developer.android.com/reference/android/app/WallpaperInfo.html
答案 1 :(得分:0)
WallpaperManager API Reference
public WallpaperInfo getWallpaperInfo ()
这里说:
如果 当前壁纸是动态壁纸组件,请返回有关该壁纸的信息。否则,如果是 静态图片,只需返回 null 。
您必须在背景中使用静态图片壁纸,而不是现场壁纸。