BitmapFactory Imansible decodificare il stream

Ehi non so perché questo continui a venire each volta che selezioni un'image nella mia galleria?

Ecco il codice:

  • Ricevere i tasti di volume quando si esegue il sonno profondo
  • Emulatore non in esecuzione
  • Come get la string dall'elemento selezionato di SimpleCursorAdapter?
  • Dagger 2 su Android @Singleton class annotata non viene iniettata
  • Come ordino il mio database SQLITE in ordine decrescente, per un'applicazione android?
  • Imansible risolvere l'host "<inserire URL qui>" Nessun indirizzo associato a hostname
  • 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); } 

    Errore:

     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 

  • Android: Salvataggio di un'image in un file e recupero
  • android youtube download url 403 proibito
  • Android: Utilizzo del selettore per impostare il colore di background per la visualizzazione delle immagini
  • Elenco di discesa di Spinner ActionBar (ActionBarCompat)?
  • Android - Attività vs ListActivity - Quale dovrebbe estendere la mia class di attività?
  • Ritardo di AudioTrack: getBuffer timed out
  • One Solution collect form web for “BitmapFactory Imansible decodificare il stream”

    Non presumere che esista un path di file. Android 4.4 e in su stanno per rimuoverli. E gli uri che hai, non hanno già path.

    È comunque ansible accedere al contenuto del file tramite un InputStream ( ContentResolver#openInputStream(Uri uri) ) o tramite un descrittore di file.

    Viene spiegato qui: ContentProviders: Apri un documento (scorri verso il basso, il collegamento alla sezione sembra essere rotto)

    E questo funziona anche su vecchie versioni 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 } } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.