2015-01-03 2 views
3

В фрагменте я звоню галерею намерение, как это:Android выбрать изображение из галереи

  // Create the Intent for Image Gallery. 
     Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(i, MainActivity.LOAD_IMAGE_RESULTS); 

И в основной деятельности я обработка результата с помощью следующего кода:

public static int LOAD_IMAGE_RESULTS = 1; 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.w("reqestCode:",""+requestCode); 
    if(requestCode == LOAD_IMAGE_RESULTS && data != null && data.getData() != null) { 
     Uri _uri = data.getData(); 

     //User had pick an image. 
     Cursor cursor = getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null); 
     cursor.moveToFirst(); 

     //Link to the image 
     final String imageFilePath = cursor.getString(0); 
     Log.w("ImageFile",imageFilePath); 
     cursor.close(); 
    } 
} 

Но в onActivityResult requestCode является возвращая значение 196609. Так что мой код не работает. Как я могу его решить?

ответ

0

Вы сказали, что вызываете это от Fragment. Вы пробовали слушать onActivityResult в обоих местах? Activity, а также Fragment? Это стоит того. :)

+0

Все тот же самый. Код ошибки возвращается 196609 – Okan

+0

И вы уверены, что LOAD_IMAGE_RESULTS is! = than 196609, wight? : D – AndreiBogdan

+0

Я дал LOAD_IMAGE_RESULTS в своем вопросе. Вы можете проверить второй блок кода – Okan

0

Выглядит вопрос с вашим намерением, которое вы создали. Попробуйте что-то вроде этого:

   pictureActionIntent = new Intent(
         Intent.ACTION_GET_CONTENT, null); 
       pictureActionIntent.setType("image/*"); 
       pictureActionIntent.putExtra("return-data", true); 
       startActivityForResult(pictureActionIntent, 
         GALLERY_PICTURE); 

Для получения дополнительной информации посетите this ответ.

+0

Я пробовал это, но до сих пор такие же проблему. Reqest code возвращается 196609 – Okan

+0

Вы пришли по этой ссылке? http://stackoverflow.com/a/11732944/631803 – VicJordan

+0

Да, но мой код выглядит корректно – Okan

0

попробовать этот код он будет работает // начать свою деятельность

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

// в результате onactivity получить растровый

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == GALLERY_INTENT_CALLED) { 
      if (null == data) 
       return; 
      String selectedImagePath; 
      Uri selectedImageUri = data.getData(); 
      // MEDIA GALLERY 
      Bitmap bitmap = BitmapFactory.decodeFile(ImageFilePath.getPath(
        getApplicationContext(), selectedImageUri)); 
      ivProfileImage.setImageBitmap(bitmap); 

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