web-dev-qa-db-fra.com

Est-il disponible pour définir checkSelfPermission sur un SDK minimum <23?

Nouvelles autorisations d'exécution dans Android-M demandant un niveau d'API minimum de 23, mais j'ai toujours besoin d'un niveau d'API minimum de 16 dans mon projet.

enter image description here

Alors, comment rendre ce code plus compatible vers l'avant?

Cordialement

26
Ardi

tilisez ContextCompat.checkSelfPermission() , ActivityCompat.requestPermissions() et ActivityCompat.shouldShowPermissionRequestRationale() , à partir de _support-v4_ bibliothèque (v23 ou supérieure). Ce sont rétrocompatibles; si vous utilisez une ancienne version d'Android, ils "feront la bonne chose" (par exemple, retourneront _PackageManager.PERMISSION_GRANTED_ pour ContextCompat.checkSelfPermission()).

56
CommonsWare

Vérifiez simplement votre Android avant d'obtenir l'autorisation de vérifier:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    //    public void requestPermissions(@NonNull String[] permissions, int requestCode)
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for Activity#requestPermissions for more details.
                    return;
                }
            }else{
              //Do Your Stuff
           }
5

Si vous ne souhaitez pas utiliser AppCompatActivity, la méthode est décrite ici https://codemammoth.blogspot.gr/2016/06/how-to-invoke-checkselfpermission.html

Vous devez invoquer les méthodes :)

4
Nikos

checkSelfPermission est disponible au-dessus du SDK 23.

nous pouvons vérifier que l'autorisation est disponible ou ne pas utiliser le gestionnaire de paquets

public static Boolean checkpermissions(Activity activity) {


        PackageManager mPackageManager = activity.getPackageManager();
        int hasPermStorage = mPackageManager.checkPermission(Android.Manifest.permission.WRITE_EXTERNAL_STORAGE, activity.getPackageName());


        if (hasPermStorage != PackageManager.PERMISSION_GRANTED) {
            // do stuff
            //Toast.makeText(getApplicationContext(), "No permission", Toast.LENGTH_LONG).show();

            return false;
        } else if (hasPermStorage == PackageManager.PERMISSION_GRANTED) {

            // do stuff
            //Toast.makeText(getApplicationContext(), "Has permission", Toast.LENGTH_LONG).show();

            return true;
        }else
            return false;
    }
1
Dino Sunny

Vous pouvez vérifier la version de construction if(Build.Version.SDK_INT >= Build.VERSION_CODES.Marshmallow). Et puis gérer les autorisations Marshmallow là-dedans, et gérer les autres versions autrement.

1
Chris Thoma