web-dev-qa-db-fra.com

Comment obtenir la permission pour la caméra dans Android. (Plus précisément, Marshmallow)

Hé, je conçois une application dans le studio Android. Dans lequel j'ai besoin de la permission de la caméra. J'ai inclus <uses-permission Android:name="Android.permission.CAMERA" /> dans le fichier AndroidManifest.xml. Il fonctionne correctement dans toutes les versions d'Android, à l'exception de Marshmallow. Comment puis-je obtenir l'autorisation de la caméra par défaut? Si ce n'est pas possible, comment puis-je le demander à l'utilisateur?

14
Toyas

Commencez par vérifier si l'utilisateur a accordé l'autorisation:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
    == PackageManager.PERMISSION_DENIED)

Ensuite, vous pouvez utiliser ceci pour demander à l'utilisateur:

ActivityCompat.requestPermissions(activity, new String[] {Manifest.permission.CAMERA}, requestCode);

Et dans Guimauve, il apparaîtra dans une boîte de dialogue

36
Serch

Vous pouvez essayer le code suivant pour demander l'autorisation de la caméra dans Marshmallow. 

Commencez par vérifier si l'utilisateur accorde l'autorisation. Si l'utilisateur ne dispose pas du permission puis demander la permission de la caméra.

private static final int MY_CAMERA_REQUEST_CODE = 100;

    if (checkSelfPermission(Manifest.permission.CAMERA)
                        != PackageManager.PERMISSION_GRANTED) {
               requestPermissions(new String[]{Manifest.permission.CAMERA},
                            MY_CAMERA_REQUEST_CODE);
                }

Après avoir demandé l'alerte d'autorisation s'affichera pour demander l'autorisation contient les options autoriser et refuser. Après avoir cliqué sur l'action, nous pouvons obtenir résultat de la demande avec la méthode suivante.

@Override

    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == MY_CAMERA_REQUEST_CODE) {

            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();

            } else {

                Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();

            }

        }}//end onRequestPermissionsResult
25
Sathish Kumar VG

RxPermission est la meilleure bibliothèque qui a créé le code 1 ligne.

Pour la permission de la caméra, la solution de contournement est la suivante.

1) Ajoutez d'abord cette permission dans votre manifest.xml.

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

2) Ensuite, demandez la permission d'exécution.

 new RxPermissions(this)
.request(Manifest.permission.CAMERA) // ask single or multiple permission once
.subscribe(granted -> {
    if (granted) {
       // All requested permissions are granted
    } else {
       // At least one permission is denied
    }
});

ajouter cette bibliothèque dans votre build.gradle

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}

N'est-ce pas facile?

2
Khemraj
check using this
if (ContextCompat.checkSelfPermission(this, Android.Manifest.permission.CAMERA)
            == PackageManager.PERMISSION_DENIED)

et 

2
Kogile

Cela fonctionne pour moi, la source est ici

int MY_PERMISSIONS_REQUEST_CAMERA=0;
        // Here, this is the current activity
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
        {
            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA))
            {

            }
            else
            {
                ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CAMERA );
                // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
                // app-defined int constant. The callback method gets the
                // result of the request.
            }
        }
1
cmujica