2011-08-11 11 views
10

La captura de fotos Intent provoca NullPointerException en teléfonos Samsung solamente.La captura de fotografías El intento causa NullPointerException en teléfonos Samsung solo

Implementación a continuación.

final Button capture = (Button)findViewById(R.id.capture_button); 
capture.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

    } 
}); 


protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_PIC_REQUEST) { 

     Bitmap thumbnail = (Bitmap)data.getExtras().get("data"); 
     ImageView image = (ImageView)findViewById(R.id.photoResultView); 
     image.setImageBitmap(thumbnail); 
    } 
} 
+0

Qué línea causó la NPE? – Matt

+0

@Matt the image.setImageBitmap (miniatura); línea como miniatura fue nula –

Respuesta

13

He encontrado una solución (no es mi trabajo) que hace que funcione para los dispositivos de Samsung. El blog con explicación se puede encontrar here.

Sin embargo, el uso de esta revisión en los teléfonos Samsung no devuelve la imagen equivocada, así que utilizaría un

if(imageURI != null) { 
    // do it the normal way 
else { 
    // do it the "Samsung" way 
} 
+4

como @Pyrodante sugirió "Sin embargo, el uso de esta corrección en teléfonos que no son de Samsung devuelve una imagen incorrecta, así que usaría un" ¿podría alguien publicar el código completo, que debería funcionar tanto en Samsung como en Samsung? – LMK

2

se puede comprobar de forma sencilla poco aquí para obtener Uri.

obtener la ruta de captura de imagen de la cámara en Android

llamando cámara

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(Intent.createChooser(cameraIntent,"Select Picture"), CAMERA_PIC_REQUEST1); 

resultado de la actividad

final ContentResolver cr = getContentResolver();  
final String[] p1 = new String[] { 
    MediaStore.Images.ImageColumns._ID, 
    MediaStore.Images.ImageColumns.DATE_TAKEN 
}; 
Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC");  
if (c1.moveToFirst()) { 
    String uristringpic = "content://media/external/images/media/" +c1.getInt(0); 
    Uri newuri = Uri.parse(uristringpic); 
    Log.i("TAG", "newuri "+newuri);      
} 
c1.close(); 
} 

A continuación, puede obtener una imagen Uri captura de ruta

Get camera capture image path in android

-2

obtener la ruta de captura de imagen de la cámara en Android

llamando cámara

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(Intent.createChooser(cameraIntent,"Select Picture"), CAMERA_PIC_REQUEST1); 

sobre la actividad resultado

final ContentResolver cr = getContentResolver();  
final String[] p1 = new String[] { 
    MediaStore.Images.ImageColumns._ID, 
    MediaStore.Images.ImageColumns.DATE_TAKEN 
}; 

Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC");  
if (c1.moveToFirst()) { 
    String uristringpic = "content://media/external/images/media/" +c1.getInt(0); 
    Uri newuri = Uri.parse(uristringpic); 
    Log.i("TAG", "newuri "+newuri); 
} 
c1.close(); 

entonces u puede imagen Uri captura de ruta obtener

(source)

+0

El enlace solitario es [considerada como una respuesta incorrecta] (http://stackoverflow.com/faq#deletion) ya que no tiene sentido por sí mismo y no se garantiza que el recurso objetivo esté activo en el futuro. Intente incluir al menos un resumen de la información a la que está enlazando. – j0k

3

Sólo tiene el mismo problema en un Samsung S4 y descubrió que la adición de configChanges a la AndroidManifest.xml resuelto el problema:

<activity 
    android:name=".YourActivity" 
    android:configChanges="orientation|keyboardHidden|screenSize" 
    android:screenOrientation="portrait" > 
</activity> 
+0

¡Funciona para mí! Weird Samsung! – Steven

Cuestiones relacionadas