Android 使用Intent从库中选择图像
我正在尝试从gallery中选择并带来图像,我可以为4.4.2版本带来图像,但5.0.0或更高版本不起作用 单击imageview1时: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();
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屏幕中可以看到所有图像。您甚至不会对位图为空做出反应。你是程序员吗?不,它不是空的。它永远不会成功,因为它正在发挥作用。