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.
Alors, comment rendre ce code plus compatible vers l'avant?
Cordialement
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()
).
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
}
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 :)
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;
}
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.