Android получает только изображение из галереи

Я пытаюсь получить изображение, используя встроенную галерею. Он отлично работает в эмуляторе и открывает только галерею, но на реальном устройстве он дает мне несколько вариантов выбора, один из них - файловый менеджер, который позволяет мне выбирать файлы любого типа, даже файлы 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;
        }  
      }  

}


person mrl25    schedule 06.03.2012    source источник
comment
Удалите файловый менеджер, так как это явно мусор. При этом StackOverflow предназначен для вопросов по программированию, а это не вопрос.   -  person CommonsWare    schedule 06.03.2012
comment
Мне кажется, что его вопрос: как разрешить пользователю выбирать фотографию с помощью галереи с намерением.   -  person FoamyGuy    schedule 06.03.2012


Ответы (3)


Попробуй использовать

.... 
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType("image/*");
    startActivityForResult(intent, SELECT_PICTURE);
....
person Vyacheslav Shylkin    schedule 06.03.2012
comment
В стандартном приложении Android 4.4 Photos это не учитывается. - person Sander Versluys; 15.05.2014
comment
Единственный правильный ответ. Я искал много времени - моя ошибка заключалась в установке намерения.setAction(Intent.ACTION_GET_CONTENT); Многие андроиды предоставляют мне возможность выбора из таких приложений, как google drive, viber photoes, но я не смог разобрать uri. Спасибо за ваш ответ, уверен, что все стандартные галереи должны обрабатывать это должным образом (я проверил на 4 телефонах) - person Anton Kizema; 17.12.2015

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

ммх, как-то это изменило положение моих последних нескольких "}".

Этот код позволит вам выбрать изображение из галереи, а затем отобразить его в представлении изображения.

Я использую этот код на своем устройстве, и он отлично работает.

person Bigflow    schedule 06.03.2012

Попробуйте использовать это для своих целей:

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

Если вы хотите всегда использовать стандартное приложение Gallery, я не думаю, что вам нужно использовать Intent Chooser, чтобы вы могли изменить свою startActivity на это:

startActivityForResult(intent, SELECT_PICTURE);
person FoamyGuy    schedule 06.03.2012