Подтвердить что ты не робот

Можно ли установить checkSelfPermission на минимальном SDK <23?

Новые разрешения во время выполнения в Android-M, требующие минимум 23 уровня API, но мне по-прежнему требуется минимум 16 уровней API в моем проекте.

введите описание изображения здесь

Итак, как сделать этот код более передовым?

Привет

4b9b3361

Ответ 1

Используйте ContextCompat.checkSelfPermission(), ActivityCompat.requestPermissions() и ActivityCompat.shouldShowPermissionRequestRationale(), из библиотеки support-v4 (v23 или выше). Они совместимы с обратной связью; если вы используете более старую версию Android, они "сделают правильную вещь" (например, верните PackageManager.PERMISSION_GRANTED для ContextCompat.checkSelfPermission()).

Ответ 2

Просто проверьте версию вашего 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
           }

Ответ 3

Вы можете проверить версию сборки if(Build.Version.SDK_INT >= Build.VERSION_CODES.MARSHMALLOW). Затем обработайте разрешающие средства и пропустите другие версии в противном случае.

Ответ 5

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;
    }