【问题标题】:How to use Intent to get external image and set as wallpaper如何使用 Intent 获取外部图像并设置为墙纸
【发布时间】:2016-08-28 20:42:05
【问题描述】:

我使用意图打开用户手机的图库,现在我需要将选定的图像设置为我的活动的墙纸。或者在我的活动上将图像设置为 ImageView。而不是设置为手机的墙纸。 有人可以帮助我吗? 这是我到目前为止使用的代码..我可以选择图像。但之后没有任何反应。

@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();
            }

        }
    });

}

【问题讨论】:

    标签: android android-intent android-imageview android-wallpaper


    【解决方案1】:

    这样实现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 方法

    【讨论】:

    • 如果我需要将其设置为 Layout 或 Button 的背景,我该怎么做?
    • 我无法使用上下文。它显示未找到错误。我使用 setBackgroundDrawable 到 RelativeLayout。但是当我使用它时,应用程序崩溃了。 “不幸的是应用程序已停止”。这是怎么回事?我很困惑
    • 您可以创建一个上下文变量并将this分配给它
    • 如果我使用布局,应用程序崩溃。这是我使用布局有问题吗?不能用来设置背景吗?
    • E/AndroidRuntime(4247): java.lang.RuntimeException: 传递结果失败 ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://media /external/images/media/136980 }} 到活动 {com.ex.myapp/com.ex.myapp.LoginActivity}:java.lang.NullPointerException 08-29 11:39:17.790:E/AndroidRuntime(4247):在android.app.ActivityThread.deliverResults(ActivityThread.java:3162) 08-29 11:39:17.790: E/AndroidRuntime(4247): 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:3205)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多