BitmapFactory No se puede decodificar el flujo

Hey no estoy seguro de por qué esto sigue apareciendo cada vez que selecciono una imagen en mi galería?

Aquí está el código:

if (v == uploadImageButton) { // below allows you to open the phones gallery Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult( Intent.createChooser(intent, "Complete action using"), 1); } public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == 1 && null != data) { // Bitmap photo = (Bitmap) data.getData().getPath(); Uri selectedImageUri = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImageUri, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); cursor.close(); Log.e("Picture", picturePath); decodeFile(picturePath); } } public void decodeFile(String filePath) { // TODO Auto-generated method stub // Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, o); // the new size we want to scale to final int REQUIRED_SIZE = 1024; // Find the correct scale value. It should be the power of 2. int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 1; while (true) { if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE) { break; } width_tmp /= 2; height_tmp /= 2; scale *= 2; } // decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; Bitmap bitmap = BitmapFactory.decodeFile(filePath, o2); imageview.setImageBitmap(bitmap); } 

Error:

 01-17 23:18:04.642: D/Documents(25157): onFinished() [content://com.android.providers.media.documents/document/image%3A901] 01-17 23:18:04.682: E/BitmapFactory(24993): Unable to decode stream: java.lang.NullPointerException 01-17 23:18:04.682: E/BitmapFactory(24993): Unable to decode stream: java.lang.NullPointerException 01-17 23:18:09.732: I/InputReader(766): Reconfiguring input devices. changes=0x00000004 01-17 23:18:09.732: I/InputReader(766): Device reconfigured: id=4, name='touch_dev', size 1080x1920, orientation 3, mode 1, display id 0 

No asuma que hay una ruta de acceso de archivo. Android 4.4 y versiones posteriores están a punto de eliminarlos. Y el uri que tienes ya no tiene camino.

Aún puede acceder al contenido del archivo a través de un InputStream ( ContentResolver#openInputStream(Uri uri) ) oa través de un descriptor de archivo.

Se explica aquí: ContentProviders: Abrir un documento (desplácese hacia abajo, el enlace a la sección parece estar roto)

Y eso funciona en las versiones más antiguas de Android.

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == 1 && null != data) { decodeUri(data.getData()); } } public void decodeUri(Uri uri) { ParcelFileDescriptor parcelFD = null; try { parcelFD = getContentResolver().openFileDescriptor(uri, "r"); FileDescriptor imageSource = parcelFD.getFileDescriptor(); // Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeFileDescriptor(imageSource, null, o); // the new size we want to scale to final int REQUIRED_SIZE = 1024; // Find the correct scale value. It should be the power of 2. int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 1; while (true) { if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE) { break; } width_tmp /= 2; height_tmp /= 2; scale *= 2; } // decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; Bitmap bitmap = BitmapFactory.decodeFileDescriptor(imageSource, null, o2); imageview.setImageBitmap(bitmap); } catch (FileNotFoundException e) { // handle errors } catch (IOException e) { // handle errors } finally { if (parcelFD != null) try { parcelFD.close(); } catch (IOException e) { // ignored } } } 
  • Conversión de HashMap en una matriz
  • No se pudo importar el nuevo proyecto de Gradle: no se pudo encontrar la revisión de las herramientas de compilación * .0.0
  • ¿Cuál es el uso del permiso de Android Wake Lock?
  • Cómo obtener la lista de navegadores web en el sistema
  • Array de escritura en Firebase android
  • Android Editar texto cubierto por el teclado en el segundo toque
  • ¿Cómo abrir Google Maps con la dirección?
  • Selector de color de Android
  • Java android - CookieHandler - ¿Cómo mantener las cookies después de cerrar la aplicación?
  • No se encontraron pruebas en <package> cuando se realizaron pruebas con Espresso
  • JavascriptInterface llamado pero no mostrando Toast
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.