我在Activity的onCreate方法中请求覆盖权限。
if (Build.VERSION.SDK_INT >= 23 && !Settings.canDrawOverlays(this)) {
// Get permission to show redbox in dev builds.
Intent serviceIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(serviceIntent);
GeneralLog.w(ReactConstants.TAG, REDBOX_PERMISSION_MESSAGE);
Toast.makeText(this, REDBOX_PERMISSION_MESSAGE, Toast.LENGTH_LONG).show();
}
大多数情况下,此方法运行良好,但是当我调用Activity#requestPermissions后打开权限对话框时(假设我正在请求SMS权限,这会弹出一个对话框),然后按此精确旋转设备当权限对话框显示在屏幕上的那一刻,将重新创建活动,但是这次canDrawOverlays返回false并启动意图以请求覆盖权限,即使用户已经授予了覆盖权限。
这会在任何API> = 23的设备中发生