由于最近工作需要了解android的壁纸机制,当时急切地想在网上找点资料来了解WallpaperManager.setResource()之后的流程,但网上仅有一点不全的东西,其它的全是粘贴复制那点不全的内容,真是捉急。今天自己来写下关于设置壁纸的流程,希望后来者不用像本人一样找不到能用的资料。
假设调用WallpaperManager.setResource()方法来设置壁纸(还有wallpaperManager的其它方法也可以设置壁纸,但流程是一样的),
public void setResource(int resid) throws IOException {
if (sGlobals.mService == null) {
Log.w(TAG, "WallpaperService not running");
return;
}
try {
Resources resources = mContext.getResources();
/* Set the wallpaper to the default values */
ParcelFileDescriptor fd = sGlobals.mService.setWallpaper(
"res:" + resources.getResourceName(resid));
if (fd != null) {
FileOutputStream fos = null;
try {
fos = new ParcelFileDescriptor.AutoCloseOutputStream(fd);