I get ERROR revoked permission android.permission.CAMERA
I was using camera permission on manifest
private void dispatchTakePictureIntent(int actionCode) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
switch (actionCode) {
case ACTION_TAKE_PHOTO_B:
File f = null;
try {
f = setUpPhotoFile();
mCurrentPhotoPath = f.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
} catch (IOException e) {
e.printStackTrace();
f = null;
mCurrentPhotoPath = null;
}
break;
default:
break;
} // switch
startActivityForResult(takePictureIntent, actionCode);
}
and error like this:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mobile.lunatique.photo, PID: 3590
java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.android.camera2/com.android.camera.CaptureActivity clip={text/uri-list U:file:///KTP_42342.jpg} (has extras) } from ProcessRecord{2fbbd91 3590:com.mobile.lunatique.photo/u0a60} (pid=3590, uid=10060) with revoked permission android.permission.CAMERA
at android.os.Parcel.readException(Parcel.java:1599)
at android.os.Parcel.readException(Parcel.java:1552)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2658)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1507)
at android.app.Activity.startActivityForResult(Activity.java:3917)
at android.app.Activity.startActivityForResult(Activity.java:3877)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:842)
at com.mobile.lunatique.photo.MainActivity.dispatchTakePictureIntent(MainActivity.java:254)
at com.mobile.lunatique.photo.MainActivity.access$000(MainActivity.java:33)
at com.mobile.lunatique.photo.MainActivity$1.onClick(MainActivity.java:321)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
I/Process: Sending signal. PID: 3590 SIG: 9
anyone can help me??
Hi lunatique aldebaran,
I had similar issue but it looks like Android has a bug with this. When you add camera permission to AndroidManifest
You have to grant permission for it even you want to use external application for taking a photo. Deleting it from manifest has solved problem with SecurityException.
Revoke Permission....It Simply say's you have invoked the permission again so no need to write permission for Camera again in Manifest file ......
Instead you just....need to write two line....to READ and Write External Storage which are enough to run your program it's enough to run your program
Here's how I solved this problem.
Contrary to what most other answers say, REMOVE this from your Manifest file.
Why?
Starting Android M (API 23), if your app has CAMERA permission declared in the manifest, then, it needs that CAMERA permission to be GRANTED in order to access ACTION_IMAGE_CAPTURE etc... too (which normally do not require the CAMERA permission on their own). If not, then it automatically raises a SecurityException.
So, what to do?
Option 1- If you only need ACTION_IMAGE_CAPTURE etc..
Remove the CAMERA permission from manifest and you would be fine
Option 2- If you need CAMERA permission too
Check for CAMERA permission at runtime and only start the intent when the permission is available
You should use
AppCompatActivity
instead, of extending your MainActivity. And also please, include stacktrace.Oh, sorry. With stacktrace it's clearly seen main problem.
android.permission.CAMERA
. For making request, you should create permission check. Please, check This Example, to create Permission checking.Example:
1) Include to Activity.
2) Ensure you request permissions from the user:
3) Check in RunTime