To set the phone wallpaper you can use the WallpaperManager
class.
Get it by using:
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext())
and use the methods setStream(InputStream bitmapData)
or setBitmap(Bitmap bitmap)
What ever more comfortable for you.
You can find more on it in the documentation:
https://developer.android.com/reference/android/app/WallpaperManager.html#setStream(java.io.InputStream)
https://developer.android.com/reference/android/app/WallpaperManager.html#setBitmap(android.graphics.Bitmap)
note that you will have to add
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
to your manifest permissions
This should look like that:
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
wallpaperManager.setBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
Picasso.with(getContext()).load(url).into(target);