2012-03-06 5 views
12

Я пытаюсь получить изображение, используя встроенную галерею. Он отлично работает в эмуляторе, и он открывает только галерею, но на реальном устройстве он дает мне несколько вариантов выбора, один из них - файловый менеджер, который позволяет мне выбирать любые типы файлов, даже файлы apk, конечно, сбой приложения после этого У меня есть этот кодAndroid получить только изображение из галереи

@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; 
     } 
     } 

}

+0

Удалите файловый менеджер, так как это явно кусок хлама. При этом StackOverflow предназначен для программирования вопросов, и это не вопрос. – CommonsWare

+1

Мне кажется, что его вопрос: «Как разрешить пользователю выбирать фотографию с помощью галереи с намерением». – FoamyGuy

ответ

24

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

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

Спасибо, это было очень полезно – mrl25

+2

В приложении Android Android 4.0 приложение не учитывает это. –

+0

Единственная установка answeir. Я искал много времени - моя ошибка заключалась в установке намерения.setAction (Intent.ACTION_GET_CONTENT); Многие андроиды предоставляют мне выбор для выбора из таких приложений, как Google Drive, Viber-фотографии, но я не мог разобрать uri. Спасибо за ваш ответ, конечно, все стандартные галереи должны справиться с этим должным образом (я проверил на 4 телефонах) –

1

Попробуйте использовать это для вашего намерения:

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

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

startActivityForResult(intent, SELECT_PICTURE); 
5
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 

МОМУ, как-то он изменил положение моих последних «}».

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

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

Смежные вопросы