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!
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! –