Android 使用Intent从库中选择图像

Android 使用Intent从库中选择图像,android,android-intent,image-gallery,android-gallery,onactivityresult,Android,Android Intent,Image Gallery,Android Gallery,Onactivityresult,我正在尝试从gallery中选择并带来图像,我可以为4.4.2版本带来图像,但5.0.0或更高版本不起作用 单击imageview1时: imageview1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent galeri_int = new Intent();

我正在尝试从gallery中选择并带来图像,我可以为4.4.2版本带来图像,但5.0.0或更高版本不起作用

单击imageview1时:

imageview1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent galeri_int = new Intent();
                galeri_int.setType("image/*");
                galeri_int.setAction(Intent.ACTION_GET_CONTENT);
                galeri_int.addCategory(Intent.CATEGORY_OPENABLE);


                startActivityForResult(galeri_int,44);

                Log.d("tık","tıklandı");


            }
        });
OnActivityResult:

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


        InputStream stream = null;

        if(data  !=null){

        try {
            stream = getContentResolver().openInputStream(data.getData());
            bitmapx = BitmapFactory.decodeStream(stream);
            stream.close();
            Bitmap resized = resize(bitmapx,1000,1000);

           imageview.setImageBitmap(resized);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        }


    }
它不适用于5.0.0或更高版本,所以我应该怎么做?

试试这个

Intent intent = new Intent();  
    intent.setType("image/*");  
    intent.setAction(Intent.ACTION_GET_CONTENT);  
    startActivityForResult(Intent.createChooser(intent, "Choose Picture"), 1);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    if(resultCode==RESULT_CANCELED)
    {
        // action cancelled
    }
    if(resultCode==RESULT_OK)
    {
        Uri selectedimg = data.getData();
        imageView.setImageBitmap(MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedimg));
    }
}

最后,我解决了更改click listener的问题

imageview1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

        startActivityForResult(i,44);

        Log.d("tık","tıklandı");


    }
});

我解决了更改单击侦听器的问题
。否。您的点击侦听器是相同的。但是你改变了使用意图的行为。这真是个坏主意。为什么是个坏主意?它解决了我的问题,现在它适用于所有版本。
不适用于5.0.0或更高版本
。你应该开始关注那些不起作用的东西。我发现您尝试生成的第一个位图是
null
。你应该告诉我们。如果我在5.0版或更高版本中使用此代码,则不会看到图像(当用户在gallery屏幕中单击imageview1时,不会看到图像。只会看到它们的大小,不会看到它们的缩略图)。最后,我的答案是适用于所有版本。在gallery屏幕中可以看到所有图像。您甚至不会对位图为空做出反应。你是程序员吗?不,它不是空的。它永远不会成功,因为它正在发挥作用。