无法从图库 android 应用中 select 图片(灰显)

Unable to select image from gallery android app (grayed out)

我正在尝试允许应用程序用户 select 从他们的图库中获取图像,并且仅当用户实际 select 时才设置图像 uri。我面临的问题是,当我打开图片库时,所有图片都显示为灰色,而且无论图片格式如何,我都无法 select 一张图片。这是该部分的代码:

    hostImageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        Intent imageIntent = new Intent();                                                      
        imageIntent.setType("image*/");                                                         
        imageIntent.setAction(Intent.ACTION_GET_CONTENT);                                       
        startActivityForResult(Intent.createChooser(imageIntent,"Choose host image"),000);      

        }
       }
    );
}

public void onActivityResult(int askCode, int retCode, Intent info){                             
    if (retCode==RESULT_OK){
        if (askCode==000){
            hostImageView.setImageURI(info.getData());                                      
        }     
}

我建议您获取选定的图像路径而不是图像类型,然后将其加载到您的图像视图中。试试这个,

    public boolean  click(View v)
{
    Intent intent = new   Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, 1);
    return true;
}

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

    if (requestCode == 1 && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();

        ImageView imageView = (ImageView) findViewById(R.id.imageView1);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

    }
}

按如下方式更新画廊打开代码:

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 2);

并在 onActivityResult 方法

中使用数字 2(或您用于开始 activity 的数字)

星号(*)应该放在正斜杠(/)之后。

内容类型 "image/*" 表示类别图像,具有任何扩展名(.jpeg、.png、...)

以下对我有用

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);