0

Good morning,

I am using the following code to take a picture and display it on Imageview.

    private static final int CAMERA_REQUEST = 1888;
    public void OpenCamera(){
        AddImage.setOnClickListener(
                new View.OnClickListener(){
                    @Override
                    public void onClick(View v){
                        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                        startActivityForResult(cameraIntent, CAMERA_REQUEST);
                    }
                }
        );

    }
    // for getting displaying the picture on the image view
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            // to remove the main background and draw the picture
            AddImage.setBackgroundResource(0);
            AddImage.setImageBitmap(photo);
            //Barcode();
        }
    }

Everything was working fine until importing 'zxing' library to generate QRcodes for the taken images. However, I'v checked the camera permission in the 'manifest' and its working fine, the code of the permission is:

<uses-permission android:name="android.permission.CAMERA"> </uses-permission>

And the method of checking it is (its returning true):

public boolean hasPermissionInManifest(Context context, String permissionName) {
        final String packageName = context.getPackageName();
        try {
            final PackageInfo packageInfo = context.getPackageManager()
                    .getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
            final String[] declaredPermisisons = packageInfo.requestedPermissions;
            if (declaredPermisisons != null && declaredPermisisons.length > 0) {
                for (String p : declaredPermisisons) {
                    if (p.equals(permissionName)) {
                        return true;
                    }
                }
            }
        } catch (PackageManager.NameNotFoundException e) {

        }
        return false;
    }

Now, I am getting the following error when "startActivityForResult(cameraIntent, CAMERA_REQUEST);" is called:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: iq.wissam.CoiApp, PID: 3853
                  java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE cmp=com.android.camera/.Camera } from ProcessRecord{88f1abb 3853:iq.nazaha.wissam.CoiApp/u0a85} (pid=3853, uid=10085) with revoked permission android.permission.CAMERA
                      at android.os.Parcel.readException(Parcel.java:1683)
                      at android.os.Parcel.readException(Parcel.java:1636)
                      at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3071)
                      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1518)
                      at android.app.Activity.startActivityForResult(Activity.java:4224)
                      at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)
                      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)
                      at android.app.Activity.startActivityForResult(Activity.java:4183)
                      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)
                      at iq.nazaha.wissam.CoiApp.AddNewItemPage$1.onClick(AddNewItemPage.java:91)
                      at android.view.View.performClick(View.java:5610)
                      at android.view.View$PerformClick.run(View.java:22265)
                      at android.os.Handler.handleCallback(Handler.java:751)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:6077)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

Thanks in advance.

0 Answers0