Android – 如何设置壁纸图像

是否有可能以编程方式设置Android壁纸图像? 我想创build一个服务,从网上下载图像,并定期更新主屏幕壁纸。

从开发者网站上的这个页面 :

public void setStream (InputStream data) 

将当前的系统壁纸更改为特定的字节stream。 给InputStream复制到持久存储,现在将被用作壁纸。 目前它必须是JPEG或PNG图像。

如果你有图片的url,然后使用

 WallpaperManager wpm = WallpaperManager.getInstance(context); InputStream ins = new URL("absolute/path/of/image").openStream(); wpm.setStream(ins); 

如果你有图像的URI,然后使用

 WallpaperManager wpm = WallpaperManager.getInstance(context); wpm.setResource(Uri.of.image); 

在你的清单文件中:

 <uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission> 

如果你有图像的位图比你将添加此function设置为壁纸:

  public void SetBackground(int Url) { try { File file = new File("/sdcard/sampleimage"); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), Url); bitmap.compress(CompressFormat.JPEG, 80, new FileOutputStream(file)); Context context = this.getBaseContext(); context.setWallpaper(bitmap); Toast.makeText(getApplicationContext(), "Wallpaper has been set", Toast.LENGTH_SHORT).show(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

你应该为此添加权限

 <uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission> 

希望它能工作

OK以下是如何在api 2.0之前完成的:

您需要调用getApplicationContext.setWallpaper()并将其传递给位图。

此方法现在已被弃用。 有关新方法的详细信息,请参阅ChrisF的答案。