Новые разрешения во время выполнения в Android-M, требующие минимум 23 уровня API, но мне по-прежнему требуется минимум 16 уровней API в моем проекте.
Итак, как сделать этот код более передовым?
Привет
Новые разрешения во время выполнения в Android-M, требующие минимум 23 уровня API, но мне по-прежнему требуется минимум 16 уровней API в моем проекте.
Итак, как сделать этот код более передовым?
Привет
Используйте ContextCompat.checkSelfPermission()
, ActivityCompat.requestPermissions()
и ActivityCompat.shouldShowPermissionRequestRationale()
, из библиотеки support-v4
(v23 или выше). Они совместимы с обратной связью; если вы используете более старую версию Android, они "сделают правильную вещь" (например, верните PackageManager.PERMISSION_GRANTED
для ContextCompat.checkSelfPermission()
).
Просто проверьте версию вашего Android, прежде чем получить разрешение на проверку:
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
}
Вы можете проверить версию сборки if(Build.Version.SDK_INT >= Build.VERSION_CODES.MARSHMALLOW)
. Затем обработайте разрешающие средства и пропустите другие версии в противном случае.
Если вы не хотите использовать AppCompatActivity, здесь описывается способ https://codemammoth.blogspot.gr/2016/06/how-to-invoke-checkselfpermission.html
Вам нужно вызвать методы:)
checkSelfPermission доступен выше sdk 23.
мы можем проверить, доступно ли разрешение или нет с помощью диспетчера пакетов
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;
}