首页 > 解决方案 > 使用 url android studio (Java) 设置壁纸

问题描述

我搜索了很多,但我不知道该怎么做,如果有人有办法做到这一点

这是我的代码:

public class MainActivity extends AppCompatActivity {

Button btn ;
    String url;  

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
btn=findViewById(R.id.btnsetwallpaper);
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        //some code here so that I can set the wall paper of the phone using url

    }
});

    }
}

标签: javaandroidandroid-studio

解决方案


在清单中添加权限

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

实施毕加索来帮助你,文档:https ://square.github.io/picasso/

在您的 MainActivity 中添加此 AsyncTask 类

public class SetWallpaper extends AsyncTask<String, Void, Bitmap> {

        ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);

        @Override
        protected Bitmap doInBackground(String... params) {
            Bitmap bitmap = null;
            try {
                bitmap = Picasso.get().load(params[0]).get();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }

        @Override
        protected void onPostExecute (Bitmap result) {
            super.onPostExecute(result);

            WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext());
            try {
                wallpaperManager.setBitmap(result);
                progressDialog.dismiss();
                Toast.makeText(getApplicationContext(), "Wallpaper changed", Toast.LENGTH_SHORT).show();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

        @Override
        protected void onPreExecute () {
            super.onPreExecute();

            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setMessage("Loading image...");
            progressDialog.setCancelable(false);
            progressDialog.show();
        }
    }

然后在你的按钮中调用它

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SetWallpaper sw = new SetWallpaper();
                sw.execute(url);
            }
        });

希望对你有帮助!


推荐阅读