web-dev-qa-db-fra.com

Fournir un texte personnalisé pour Android M

Est-il possible de fournir un texte personnalisé pour la boîte de dialogue système qui s'affiche lorsque l'utilisateur est invité à accorder une autorisation?

23
rfsk2010

Non, vous ne pouvez pas personnaliser le texte de la boîte de dialogue, mais vous pouvez fournir une explication avant de demander l'autorisation. Citant de developer.Android.com :

Demander des autorisations

Si votre application a besoin d'une autorisation dangereuse répertoriée dans le manifeste de l'application, elle doit demander à l'utilisateur d'accorder l'autorisation. Android fournit plusieurs méthodes que vous pouvez utiliser pour demander une autorisation. L'appel de ces méthodes fait apparaître une boîte de dialogue standard Android, que vous ne pouvez pas personnaliser).

Expliquez pourquoi l'application a besoin d'autorisations

Dans certaines circonstances, vous souhaiterez peut-être aider l'utilisateur à comprendre pourquoi votre application a besoin d'une autorisation. Par exemple, si un utilisateur lance une application de photographie, il ne sera probablement pas surpris que l'application demande la permission d'utiliser l'appareil photo, mais l'utilisateur peut ne pas comprendre pourquoi l'application souhaite accéder à l'emplacement ou aux contacts de l'utilisateur. Avant de demander une autorisation, vous devez envisager de fournir une explication à l'utilisateur. Gardez à l'esprit que vous ne voulez pas submerger l'utilisateur d'explications; si vous fournissez trop d'explications, l'utilisateur peut trouver l'application frustrante et la supprimer.

Une approche que vous pourriez utiliser consiste à fournir une explication uniquement si l'utilisateur a déjà refusé cette demande d'autorisation. Si un utilisateur continue d'essayer d'utiliser des fonctionnalités qui nécessitent une autorisation, mais continue de refuser la demande d'autorisation, cela montre probablement que l'utilisateur ne comprend pas pourquoi l'application a besoin de l'autorisation pour fournir cette fonctionnalité. Dans une telle situation, c'est probablement une bonne idée de montrer une explication.

Pour aider à trouver des situations où l'utilisateur pourrait avoir besoin d'une explication, Android fournit une méthode d'utilité, shouldShowRequestPermissionRationale () . Cette méthode renvoie true si l'application a déjà demandé cette autorisation et l'utilisateur a rejeté la demande.

26
Mattia Maestrini

Nous ne pouvons pas personnaliser la boîte de dialogue d'autorisation de demande, mais nous pouvons fournir à l'utilisateur une explication personnalisée indiquant pourquoi nous demandons ci-dessous est la méthode avec explication personnalisée

   private void checkForCameraPermission() {
    // Here, thisActivity is the current activity
    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
            AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
            alertBuilder.setCancelable(true);
            alertBuilder.setTitle("Camera permission necessary");
            alertBuilder.setMessage("FITsociety need camera permission to read barcode.");
            alertBuilder.setPositiveButton(Android.R.string.yes, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    ActivityCompat.requestPermissions(BarCodeScannerActivity.this,
                            new String[]{Manifest.permission.CAMERA},
                            MY_PERMISSIONS_REQUEST_CAMERA);
                }
            });

            AlertDialog alert = alertBuilder.create();
            alert.show();
        } else {
            // No explanation needed, we can request the permission.
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.CAMERA},
                    MY_PERMISSIONS_REQUEST_CAMERA);
            // MY_PERMISSIONS_REQUEST_CAMERA is an
            // app-defined int constant. The callback method gets the
            // result of the request.
        }
    } else {
        setBarCodeScannerView();
    }
}

la méthode ci-dessus vérifie si l'autorisation est déjà accordée sinon, elle vérifie si une explication personnalisée est requise avec cette méthode

ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)

la documentation de cette méthode est ici shouldShowRequestPermissionRationale () cette méthode ne renvoie true que si l'utilisateur refuse la boîte de dialogue d'autorisation ou l'utilisateur ferme l'autorisation à partir du paramètre de l'application si l'utilisateur l'a fait, puis affiche une boîte de dialogue d'alerte avec une explication personnalisée et continuer en espérant que cela fonctionne

13
rana_sadam