Можно ли отозвать разрешение у Эспрессо? - PullRequest
0 голосов
/ 31 августа 2018

Я сейчас пишу несколько тестов для приложения. Если у приложения нет разрешения на хранение, всплывает фрагмент. Я знаю, как предоставить разрешение с помощью «правила предоставления разрешения», но есть ли способ отозвать разрешение?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Нет, это невозможно. Цитата от https://developer.android.com/reference/android/support/test/rule/GrantPermissionRule:

Как только разрешение будет предоставлено, оно будет применяться ко всем тестам, запущенным в текущем измерительном приборе. Нет никакого способа отозвать разрешение после того, как оно было предоставлено. Попытка сделать это приведет к сбою процесса Instrumentation.

Что я могу предложить, так это включить методы разрешения в какую-либо службу и смоделировать проверку значения, если разрешение предоставлено

0 голосов
/ 31 августа 2018

Да, во время тестирования это возможно ... Feuby дал несколько правильный ответ на тот же вопрос в этом вопросе SO 2017

Разрешение Android отозвать при запуске каждого теста

Повтор его кода

public static boolean checkCameraPermission (MainActivity thisActivity) { вернуть ContextCompat.checkSelfPermission (thisActivity, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED; }

public static void checkAndAskCameraPermission (final MainActivity thisActivity) {

if (!checkCameraPermission(thisActivity)) {
    //No right is granted 
    // Should we show an explanation? 
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.CAMERA)) { 

        //Open a dialog explaining why you are asking permission then when when positive button is triggered, call this line 
        ActivityCompat.requestPermissions(thisActivity,
                        new String[]{Manifest.permission.CAMERA},
                        CHECK_FOR_CAMERA_PERMISSION); 

    } else { 
        // No explanation needed, we can request the permission. 
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.CAMERA},
                CHECK_FOR_CAMERA_PERMISSION); 
    } 
} 

}

...