I am making a wallpaper app, I want to set image from url as wallpaper. I assigned url by using
url = intent.getStringExtra("tmp");
from previous activity. I called this code in onClick method.
Bitmap result ;
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
try {
result= Picasso.with(this)
.load(url)
.get();
wallpaperManager.setBitmap(result);
} catch (IOException ex) {
ex.printStackTrace();
}
I am using picasso library to set image as wallpaper but I have a problem that I couldn't understand why this error occurs.
Not: ImageLoader is another class to display images.
Activity:
package gc.x;
import android.app.WallpaperManager;
import android.content.Intent;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import java.io.IOException;
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
ImageLoader imageLoader;
ImageView image;
String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = this.getIntent();
// intent.getStringExtra("tmp");
image = (ImageView)findViewById(R.id.image4) ;
Button button = (Button) findViewById(R.id.button1);
imageLoader = new ImageLoader(this.getApplicationContext());
url = intent.getStringExtra("tmp");
imageLoader.DisplayImage(url, image);
if(button != null)
button.setOnClickListener(SecondActivity.this);
}
@Override
public void onClick(View v) {
Bitmap result ;
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
try {
result= Picasso.with(this)
.load(url)
.get();
wallpaperManager.setBitmap(result);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
EDIT: I tried a solution but it is not working. It does not give error, but nothing happens when I click the button. My New Code:
package gc.x;
import android.app.WallpaperManager;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.io.IOException;
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
ImageLoader imageLoader;
ImageView image;
String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = this.getIntent();
// intent.getStringExtra("tmp");
image = (ImageView)findViewById(R.id.image4) ;
Button button = (Button) findViewById(R.id.button1);
imageLoader = new ImageLoader(this.getApplicationContext());
url = intent.getStringExtra("tmp");
imageLoader.DisplayImage(url, image);
if(button != null)
button.setOnClickListener(SecondActivity.this);
}
@Override
public void onClick(View v) {
new SetWallpaperTask();
Toast.makeText(getApplicationContext(), "Set wallpaper successfully", Toast.LENGTH_SHORT).show();
}
public class SetWallpaperTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... params) {
Bitmap result= null;
try {
result = Picasso.with(getApplicationContext())
.load("https://www.geektopia.es/storage/geek/posts/2015/08/17/marshmallow.jpg")
.get();
} catch (IOException e) {
e.printStackTrace();
}
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
wallpaperManager.setBitmap(result);
} catch (IOException ex) {
ex.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute (Bitmap result) {
super.onPostExecute(result);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext());
try {
wallpaperManager.setBitmap(result);
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Override
protected void onPreExecute () {
super.onPreExecute();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
}