Разрешение во время выполнения Android продолжает получать отказано - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь запросить разрешение на выполнение приложения Android.Вот мой код:

private static final int PERMISSION_REQUEST_CODE = 1;
String installPermission = Manifest.permission.INSTALL_PACKAGES;
String writePermission = Manifest.permission.WRITE_EXTERNAL_STORAGE;

@Click(R.id.buttonVersionUpgrade)
void buttonVersionUpgradeClicked(View v) {
    if (!checkPermission(installPermission)) {
        requestPermission(installPermission);
    }
    if (!checkPermission(writePermission)) {
        requestPermission(writePermission);
    }
}

private boolean checkPermission(String permission){
    if (Build.VERSION.SDK_INT >= 23) {
        int result = ContextCompat.checkSelfPermission(getApplicationContext(), permission);
        if (result == PackageManager.PERMISSION_GRANTED){
            return true;
        } else {
            return false;
        }
    } else {
        return true;
    }
}

private void requestPermission(String permission){
    if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)){
        Toast.makeText(getApplicationContext(), "Permission required for features to work.",Toast.LENGTH_LONG).show();
    }
    ActivityCompat.requestPermissions(this, new String[]{permission},PERMISSION_REQUEST_CODE);
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case PERMISSION_REQUEST_CODE:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(getApplicationContext(), "Permission Granted.",
                        Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplicationContext(),"Permission Denied.",
                        Toast.LENGTH_LONG).show();
            }
            break;
    }
}

В моем AndroidManifest.xml:

<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Тем не менее, приведенный выше код продолжает показывать запрещенное разрешение без запроса разрешения пользователя.Есть идеи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

У меня была ошибка в манифесте:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE " />

У меня было пробел после " WRITE_EXTERNAL_STORAGE ".Я удалил его, и теперь все в порядке.

0 голосов
/ 11 июня 2018

Прежде всего if (Build.VERSION.SDK_INT >= 23) {...} не требуется, поскольку ContextCompat.checkSelfPermission уже позаботится о необходимой обратной совместимости.

Однако в приведенном выше коде продолжает отображаться отказ в доступе без запроса разрешения у пользователя.

Это потому, что android.permission.INSTALL_PACKAGES & android.permission.DELETE_PACKAGES не предназначены для использования сторонними приложениями.

Если вы запрашиваете только android.permission.WRITE_EXTERNAL_STORAGE, вы должны увидеть соответствующий диалог разрешения.

Запрос разрешений показан для разрешений, уровень защиты которых dangerous.Вы можете обратиться к этому документу , чтобы определить уровень защиты.Для получения более подробной информации об уровнях и типах разрешений

см. обзорный документ о разрешениях *.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...