2016-07-16 11 views
0

Ich schreibe eine einfache Inventar-Management-App, die ein Bild von Elementen protokolliert wird. Das erwartete Verhalten besteht also darin, dass Benutzer auf eine Schaltfläche klicken, um die Kamera zu starten, ein Bild aufzunehmen und zur App zurückzukehren, um Textinformationen einzugeben. Aber ich erhalte die folgende Sicherheitsausnahme FehlerKamera Intent stürzt Android App

java.lang.SecurityException: Permission Denial: starting Intent { 
act=android.media.action.IMAGE_CAPTURE cmp=com.android.camera/.Camera } 
from ProcessRecord{734dbfd 22169:com.virgo19.tinni.teatracker/u0a58} 
(pid=22169, uid=10058) with revoked permission android.permission.CAMERA 

ich tagelang rund um die Web ausgesehen haben und es scheint keine Lösung zu sein, da ich bereits die Android Developer Anweisungen folgen werde. Einschließlich der Anweisung, um zur Laufzeit um Erlaubnis zu bitten. Codefragmente unten,

//Code calling camera intent 
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     if (cameraIntent.resolveActivity(getPackageManager()) != null) { 
      startActivityForResult(cameraIntent, RETURN_FROM_CAMERA); 
     } 

//On activity return request fragment 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode == RETURN_FROM_CAMERA && data != null){ 
      //Check permissions 
      int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA); 
      if(permissionCheck == PackageManager.PERMISSION_GRANTED){ 
       //Permission is okay, so get on with getting image from Camera 
       Bundle extras = data.getExtras(); 
       tinImage = (Bitmap) extras.get("data"); 
       //set image view 
       setImage(); 
      } else if (permissionCheck != PackageManager.PERMISSION_GRANTED){ 
       //Permission not granted, ask for permission 
       ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 
         REQUEST_CAMERA); 
      } 
     } 
    } 

Kann jemand sehen, warum das stürzt ab? Vielen Dank!

Antwort

2

Sie müssen die CAMERA Erlaubnis vor die Aufnahme über startActivityForResult() anfordern. Ihr aktueller Code versucht, diese Berechtigung anzufordern nach das Bild zu nehmen.

+0

Danke für die Info. Ich habe es versucht und es hat funktioniert! Ich glaube, ich war verwirrt, weil ich vorher mit dem Lesen aus dem Speicher gearbeitet hatte. Ich bat um Erlaubnis im Rückkehrcode. Danke noch einmal! –