0

Ich bin neu in Android Entwicklung und Verfolgung der Ausbildung auf Google jetzt, ich triff ein Problem. Nach der Ausführung von Bundle extra = data.getExtras() ist extra null. Auch wird es eine Nullpointer werfen, bevor ich den Code "if(extra!=null)" Hier ist der Code von onActivityResult() -MethodeBundle extra = data.getExtras() nichts nach der Verwendung der Kamera erhalten Foto

enter image description here

Hier ist der Code Teil hinzufügen, um die Kamera zu starten und speichern Foto lokal

enter image description here

All mein Code folgt dem Training und ich bin verwirrt, wo es falsch ist. Kann mir jemand helfen?

+4

setzen Sie Ihren Code hier, nicht als Bild. – currarpickt

Antwort

0

Bitte aktualisieren Sie Ihre onActivityResult(), das Ergebnis von Capture Foto reagiert nicht ein Bild. Sie gibt einen Uri zurück, den Sie in photo_intent.putExtra(MediaStore.EXTRA_OUTPUT, <<uri>>) übergeben haben. Also bitte die <<uri>> als global deklarieren, dann können Sie diesen Wert erhalten in onActivityResult()

+0

Ich denke du hast Recht und jetzt finde ich, dass es einen Uri zurück gibt, ich denke ich werde es reparieren, vielen Dank! – smilebuz

+0

@smilebuz Wie ist das Ergebnis? –

+0

Jetzt kann ich diese Nachricht korrekt anzeigen, danke für Ihre Hilfe! – smilebuz

0
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 

      hasWriteContactsPermission = checkSelfPermission(Manifest.permission.CAMERA); 
      if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) { 
       requestPermissions(new String[]{Manifest.permission.CAMERA}, 
         REQUEST_CODE_ASK_PERMISSIONS); 
       return; 
      } 
     } else { 
      Intent intent = new Intent(
         MediaStore.ACTION_IMAGE_CAPTURE); 
       if (intent.resolveActivity(getPackageManager()) != null) { 
        File photo = new File(Environment 
          .getExternalStorageDirectory(), 
          "Journal" + Utils_class.getID() + ".jpeg"); 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, 
          Uri.fromFile(photo)); 
        mSelectedFilePath = photo.getAbsolutePath(); 
        startActivityForResult(intent, 
          ACTION_TAKE_PICTURE); 
       } 

     } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 
     try { 
      if (resultCode == RESULT_OK) { 
     if (requestCode == ACTION_TAKE_PICTURE) { 
        // flag = true; 
        // new Utils(); 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
         checkPermissionForStorageForCam(); 
        } else { 

         Uri selectedImageUri = data.getData(); 

        } 


       } 

      } 
     } catch (Exception e) { 
     } 
    } 
+0

@smilebuz Sie müssen überprüfen, ob es Marshmellow ist oder nicht. Wenn Marsh Mellow bedeutet, haben Sie Erlaubnis zur Laufzeit erhalten. –

0

Wenn Sie die zusätzlichen Parameter MediaStore.EXTRA_OUTPUT mit der Kamera Absicht dann Kamera Aktivität passieren wird das aufgenommene Bild auf diesen Pfad schreiben, und es wird nicht wieder die Bitmap in der OnActivityResult-Methode.

Wenn Sie den Pfad überprüfen, den Sie übergeben, wissen Sie, dass die Kamera die erfasste Datei in diesen Pfad geschrieben hat.