【问题标题】:Android get only image from galleryAndroid仅从图库中获取图像
【发布时间】:2013-03-01 18:46:51
【问题描述】:

我正在尝试使用内置图库获取图像。它在模拟器中工作正常,它只打开画廊,但在真实设备上它给了我多个选择,其中一个是文件管理器,它使我能够选择任何类型的文件,甚至是 apk 文件,当然应用程序崩溃之后 我有这个代码

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
}

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


    if (resultCode == RESULT_OK) {  


    switch(requestCode){    

         case SELECT_PICTURE:
              Uri selectedImageUri = data.getData();


          break;
        }  
      }  

}

【问题讨论】:

  • 卸载文件管理器,因为它显然是一个垃圾。话虽如此,StackOverflow 是用于编程问题的,这不是问题。
  • 在我看来,他的问题是“我如何允许用户有意使用图库来选择照片。”

标签: android gallery


【解决方案1】:

尝试使用

.... 
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType("image/*");
    startActivityForResult(intent, SELECT_PICTURE);
....

【讨论】:

  • 现有的 Android 4.4 照片应用程序没有考虑到这一点。
  • 唯一正确的答案。我搜索了很多时间 - 我的错误是设置 intent.setAction(Intent.ACTION_GET_CONTENT);许多 android 让我可以从此类应用程序中进行选择,例如 google drive、viber photoes,但我无法解析 uri。感谢您的回答,确保所有标准画廊都应该妥善处理这个问题(我检查了 4 部手机)
【解决方案2】:
public void ChoosePicture(View v) {
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
    photoPickerIntent.setType("image/*");
    startActivityForResult(photoPickerIntent, 1);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case 1:
     {
      if (resultCode == RESULT_OK)
      {
        Uri photoUri = data.getData();
        if (photoUri != null)
        {
        try {
              String[] filePathColumn = {MediaStore.Images.Media.DATA};
              Cursor cursor = getContentResolver().query(photoUri, filePathColumn, null, null, null); 
              cursor.moveToFirst();
              int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
              String filePath = cursor.getString(columnIndex);
              cursor.close();
              bMap_image = BitmapFactory.decodeFile(filePath);
              ImageView img = (ImageView) findViewById(R.id.gallery1);
              img.setImageBitmap(bMap_image);


     }catch(Exception e)
      {}
      }
    }// resultCode
    }// case 1
    }// switch, request code
}// public void onActivityResult

嗯,不知怎的,它改变了我最后几个“}”的位置。

此代码可让您从图库中选择一张图片,然后将其显示在 imageview 上。

我在我的设备上使用此代码,效果非常好。

【讨论】:

    【解决方案3】:

    尝试将其用于您的意图:

    Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
    

    如果您想始终使用 Stock Gallery 应用程序,我认为您需要使用 Intent Chooser,以便您可以将 startActivity 更改为:

    startActivityForResult(intent, SELECT_PICTURE);
    

    【讨论】:

      猜你喜欢
      • 2017-09-24
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      相关资源
      最近更新 更多