android更换壁纸

som*_*one 1 android wallpaper android-4.0-ice-cream-sandwich

我正在尝试更改galaxy sIII(ICS os)设备上的壁纸我正在使用1280x1440 jpeg图像通过此代码:

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

....

Bitmap m = BitmapFactory.decodeByteArray(data, 0, data.length);
WallpaperManager.getInstance(this).setBitmap(m);
Run Code Online (Sandbox Code Playgroud)

哪个不起作用,以及以下不起作用:

Bitmap m = BitmapFactory.decodeResource(getResources(), R.drawable.data_img);
WallpaperManager.getInstance(this).setBitmap(m);
Run Code Online (Sandbox Code Playgroud)

但是当我使用它时:

WallpaperManager.getInstance(this).setResource(data_img);
Run Code Online (Sandbox Code Playgroud)

这是完美的工作但我的情况是下载一些图像数据保存为位图然后将其设置为壁纸.所以在我的情况下加载资源不起作用.

任何帮助,提前谢谢.

Tud*_*uca 7

你可以在这里找到文档.

你必须使用public void setStream (InputStream data)方法:

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

或者,如果你有图像URI,那么使用:

WallpaperManager wpm = WallpaperManager.getInstance(context);
wpm.setResource(Uri.of.image);
Run Code Online (Sandbox Code Playgroud)