我目前正在为一个应用程序编写一些测试。如果应用没有存储权限,则会弹出一个片段。我知道如何使用"授予权限规则"授予权限,但是有没有办法撤销权限?
不,这是不可能的。引自 https://developer.android.com/reference/android/support/test/rule/GrantPermissionRule:
授予权限后,它将应用于当前检测中运行的所有测试。授予权限后无法撤销权限。尝试这样做将使检测进程崩溃。
我能建议的是将权限方法包装到某个服务中,并模拟值检查是否授予权限
是的,在测试过程中可能...Feuby在SO 2017问题中对同一问题给出了一个有点正确的答案
安卓在每次测试开始时撤销权限
重复他的代码
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);
}
}
}