BitmapFactory: No se puede descodificar la secuencia: java.io.FileNotFoundException incluso cuando el archivo IS está realmente allí
Estoy creando una aplicación sencilla para tomar una foto. Este es mi código
Button b1; ImageView iv; String TAG = "MAIN ACTIVITY"; File photo; private Uri mImageUri; private File createTemporaryFile(String part, String ext) throws Exception { File externalStorageDirectory = Environment.getExternalStorageDirectory(); File tempDir = new File(externalStorageDirectory + "/cameratest/"); if (!tempDir.exists()) { tempDir.mkdir(); } return File.createTempFile(part, ext, tempDir); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.button); iv = (ImageView) findViewById(R.id.imageView); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); try { // place where to store camera taken picture photo = createTemporaryFile("picture", ".jpg"); photo.delete(); } catch (Exception e) { Log.v(TAG, "Can't create file to take picture!"); Toast.makeText(getApplicationContext(), "Please check SD card! Image shot is impossible!", Toast.LENGTH_SHORT).show(); } mImageUri = Uri.fromFile(photo); intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); startActivityForResult(intent, 0); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0 && resultCode == RESULT_OK) { Log.d(TAG, mImageUri.toString()); Bitmap bitmap = BitmapFactory.decodeFile(mImageUri.toString()); iv.setImageBitmap(bitmap); } }
Como se puede ver, he añadido eLog.d(TAG, mImageUri.toString());
Al final y en el logcat (así como la FileNotFoundException
) veo este direcory:
- Dagger 2 "Dagger" prefijo componente no es capaz de compilar? Clase generada automáticamente
- MPAndroidChart no está actualizando
- Cómo saber si este hilo es un hilo de interfaz de usuario
- Cómo resolver un nombre de dominio Bonjour con JmDNS
- Getdate de datepicker android
03-27 00:43:30.498 30526-30526/myapplication.example.falcoleo.cameratest1 D/MAIN ACTIVITY: file:///storage/emulated/0/cameratest/picture459838058.jpg 03-27 00:43:30.499 30526-30526/myapplication.example.falcoleo.cameratest1 E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: file:/storage/emulated/0/cameratest/picture459838058.jpg: open failed: ENOENT (No such file or directory)
Adivina si este directorio existe? Spoler alerta , lo hace . Y no es como la imagen se crea después de BitmapFactory.decodeFile
. Realmente no entiendo lo que estoy haciendo mal. Todo funciona bien, excepto cuando realmente tiene que mostrar la foto, entonces simplemente no lo muestra. Sólo en blanco. Al igual que WTF m8 estoy tratando de hacer mi trabajo no hay necesidad de volverse loco, ya sabes.
- Habilitación de protocolos SSL específicos con Android WebViewClient
- ¿Por qué la cámara del emulador androide se detiene inesperadamente?
- LED de notificación - color
- Android studio Acción llamada para ejecutar códigos USSD
- Android AudioRecord falla al inicializar (Otras soluciones no funcionan)
- Cómo guardar la lista <Object> a SharedPreferences?
- Android tapa teclado suave IME
- Android, cómo desenfocar / vidrio / helada actividad actual
Reemplace mImageUri.toString()
con mImageUri.getPath()
.
decodeFile
espera una ruta de acceso, no una cadena de uri.
file:///storage/emulated/0/cameratest/picture459838058.jpg
Remove file://
porque decodeFile () espera una ruta del sistema de archivos.
/storage/emulated/0/cameratest/picture459838058.jpg
- Seleccionar todas las casillas de verificación en RecyclerView
- Conexión a host local: 3000 rechazado en dispositivo Android