web-dev-qa-db-fra.com

Essayer d'implémenter les permissions de la caméra pour Android M sans aucune méthode virtuelle

J'ai essayé d'implémenter les permissions de la caméra de cette façon: 

private void checkCameraPermissions() {
        if(checkCameraHardware(this)) {
            if (checkSelfPermission(Manifest.permission_group.camera)
                    != PackageManager.PERMISSION_GRANTED) {

                Crashlytics.log("Requesting camera permission");

                // Should we show an explanation?
                if (shouldShowRequestPermissionRationale(
                        Manifest.permission_group.camera)) {
                    // Explain to the user why we need to use the camera
                    showRationaleForCameraUse();
                }

                requestPermissions(new String[]{Manifest.permission_group.camera},
                        Constants.MY_PERMISSIONS_REQUEST_CAMERA_GROUP);

                // MY_PERMISSIONS_REQUEST_CAMERA_GROUP is an
                // app-defined int constant
            } else {
                startApp();
            }
        }else{
            showNoCameraAvailableAlert();
        }
    }

@Override
    public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
        switch (requestCode) {
            case Constants.MY_PERMISSIONS_REQUEST_CAMERA_GROUP: {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    // permission was granted, yay!
                    // start the app
                    startApp();

                } else {

                    // permission denied, boo!
                    // leav the app!
                    showNoCameraAvailableAlert();
                }
                return;
            }

            // other 'switch' lines to check for other
            // permissions this app might request
        }
    }

et j'ai cette erreur suivante:

Java.lang.NoSuchMethodError: No virtual method checkSelfPermission(Ljava/lang/String;)I in class Lim/emu/app/emu/app/view/splash/SplashActivity; or its super classes (declaration of 'im.emu.app.emu.app.view.splash.SplashActivity' appears in /data/app/im.emu.app.emu.test-1/base.apk)
            at im.emu.app.emu.app.view.splash.SplashActivity.checkCameraPermissions(SplashActivity.Java:74)
            at im.emu.app.emu.app.view.splash.SplashActivity.onCreate(SplashActivity.Java:52)
            at Android.app.Activity.performCreate(Activity.Java:5977)
            at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
            at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2258)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2367)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:148)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1283)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:135)
            at Android.app.ActivityThread.main(ActivityThread.Java:5274)
            at Java.lang.reflect.Method.invoke(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:372)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:909)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:704)
08-30 16:34:10.801  17087-17357/im.emu.app.emu.test I/Fabric﹕ Crashlytics report upload complete: 55E30629033A-0001-42BF-296ED8AC703A.cls

Des idées pour résoudre ce problème? P.s. si vous avez besoin de plus d'informations, veuillez demander

11
dangalg

Vous devriez exécuter le code sur le périphérique exécutant les versions précédentes. Vous devez utiliser ContextCompat.checkSelfPermission() à la place.

28
Derek Fung

Attention avec 

'shouldShowRequestPermissionRationale(
                        Manifest.permission_group.camera)'   

J'ai eu un problème avec le groupe d'autorisations où il voulait l'autorisation individuelle et non le groupe et lançait une exception si vous utilisiez l'autre 

2
Travis Castillo

Vous avez oublié de donner l'autorisation dans AndroidManifest.xml

<uses-permission Android:name="Android.permission.CAMERA"/>
0
Prashant Gosai

Vous devez utiliser ActivityCompat.checkSelfPermission() à la place pour la capacité de rétrogradation sur les périphériques Pre-Lollipop. Donc, this.checkSelfPermission() ne peut être utilisé que pour les applications déclarant minSdkVersion 23

0
Roman