如何使用Intent获取外部图像并设置为壁纸

How to use Intent to get external image and set as wallpaper

我使用 intent 打开用户 phone 的图库,现在我需要将 select 编辑的图像设置为我 activity.or 的墙纸 将图像设置为 Activity.not 上的 ImageView ] 设为phone的壁纸。 有人可以帮我吗? 这是我到目前为止使用的代码。我可以 select image.but 之后什么也没有发生。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Button chooseImg=(Button) findViewById(R.id.btnChooseImg);
    chooseImg.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent img=new Intent();
            img.setType("image/*");
            img.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser
                    (img, "Select Picture"),SELECT_PICTURE);

            Object tag=v.getTag();
            Integer rId=(Integer) tag;
            img.putExtra("bgImage", rId);



            try{
            imgLayout=(ImageView) findViewById(R.id.bgImg1);


            int imgId=img.getExtras().getInt("bgImage");
            imgLayout.setBackgroundResource(imgId);

            }
            catch(Exception e){
                Toast.makeText(getApplicationContext(), "nope", Toast.LENGTH_SHORT).show();
            }

        }
    });

}

像这样实现 onActivityResult

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == SELECT_PICTURE&& resultCode == RESULT_OK && data != null && data.getData() != null) {

        Uri uri = data.getData();

        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            // Log.d(TAG, String.valueOf(bitmap));

            ImageView imageView = (ImageView) findViewById(R.id.yourimageview);
            imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

要设置按钮背景,请像这样创建一个 BitmapDrawable

BitmapDrawable bdrawable = new BitmapDrawable(context.getResources(),bitmap);

对于布局,您可以使用 setBackgroundDrawable 方法