11
votes

L'intention de capture de photos provoque NullpointerException sur les téléphones Samsung uniquement

Capture photo Capture Intention Code> Causes NullpointException Code> sur les téléphones Samsung uniquement.

Mise en œuvre ci-dessous. P>

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);
    }
}


1 commentaires

@Matt l'image.setimagebitmap (thumbnail); ligne comme la vignette était nulle


4 Réponses :


13
votes

J'ai trouvé une solution (pas mon travail) qui le fait fonctionner pour les appareils Samsung. Le blog avec explication peut être trouvé Ici .

Cependant, l'utilisation de ce correctif sur les téléphones non Samsung renvoie la mauvaise image, je vais donc utiliser un P>

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


1 commentaires

Comme @pyrodante a suggéré "Cependant, l'utilisation de ce correctif sur les téléphones non Samsung renvoie la mauvaise image, alors j'utiliserais un" N'importe lequel pourrait-il poster le code complet, qui devrait fonctionner à la fois sur Samsung et Non Samsung



3
votes

Vous pouvez vérifier un peu de manière simple ici pour obtenir URI.

Obtenir la capture de la caméra Capture de l'image dans Android P>

Caméra d'appel forte> P>

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();
}


0 commentaires

-2
votes

Obtenir la capture de la caméra Capture de l'image dans Android

Appeler la caméra P>

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();


1 commentaires

Link Lone est considéré comme une réponse médiocre car elle n'a pas de sens en soi et que la ressource cible n'est pas garantie d'être vivante à l'avenir. S'il vous plaît essayez d'inclure au moins un résumé des informations que vous reliez à.



4
votes

Il suffit de recevoir le même problème sur un Samsung S4 et découvrez que l'ajout de configchanges à l'androidmanifest.xml a résolu le problème:

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


1 commentaires

Travaille pour moi! Weird Samsung!