2017-01-15 7 views
1

Я могу получить Bitmap с изображениями в Android, но я в беде, когда пытаюсь получить объект File. Мой вопрос в том, как я могу получить объект File, когда возвращается onActivityResult.Получить файл объекта onActivityResult, если выбрать Изображение

Вот идет мой код:

Чтобы открыть выбор изображения:

private void setUpAddMorePicturesClick() { 
    Button btnAddPictures = (Button)findViewById(R.id.btn_add_pictures); 
    btnAddPictures.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT);// 
      startActivityForResult(Intent.createChooser(intent, getString(R.string.text_select_picture)), 
             ConstantValues.REQUEST_CODE_SELECT_IMAGE); 
     } 
    }); 
} 

OnActivityResult Метод:

public void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == ConstantValues.REQUEST_CODE_SELECT_IMAGE) 
     { 
      if (resultCode == Activity.RESULT_OK) 
      { 
       if (data != null) 
       { 

       //Uri uri = data.getData(); 
       //String uriString = uri.toString(); 
       //File imgFile = new File(uriString); 

       Uri selectedImage = data.getData(); 
       String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

       Cursor cursor = getContentResolver().query(selectedImage, 
         filePathColumn, null, null, null); 
       cursor.moveToFirst(); 

       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       String picturePath = cursor.getString(columnIndex); 
       cursor.close(); 


       File imgFile = new File(picturePath); // <-- NOT WORKING 

       // File imgFile = Environment.getExternalStoragePublicDirectory(data.getData().getPath()); 



       //Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData()); 
       //byte[] s = Utils.bitmapToByteArray(bitmap); 

       Snackbar snackbarError = Snackbar.make(rootRelativeLayout, R.string.msg_error_wcf_call_default, Snackbar.LENGTH_LONG); 
       //new EscortBusiness(this).addImage(s, snackbarError); 
       new EscortBusiness(this).addImageMultiPart(imgFile, snackbarError); 

      } 
     } else if (resultCode == Activity.RESULT_CANCELED) 
     { 
      Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+0

Не пытайтесь получить объект File. Тебе это не нужно. Используйте uri напрямую. – greenapps

+0

@greenapps действительно мне это нужно, я должен загрузить выбранное изображение, а в методах дооснащения в качестве параметра используется объект File. – guisantogui

+0

'// <- НЕ РАБОТАЕТ'. Ошибочная ошибка. Какой путь вы получили? Что происходит вместо этого? – greenapps

ответ

0

Используйте InputStream из URI вызвать его схема может быть файл : // или контент: //

BitmapFactory.decodeStream(getContentResolver().openInputStream(data.getData())); 

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

  • Нет связанных вопросов^_^