首页 > 解决方案 > 如何以编程方式关闭运行时权限对话框?

问题描述

我们需要实现一个场景,在用户闲置 5 秒后,我们必须使用 Denial 关闭运行时权限对话框。

脚步:

  1. 用户单击保存按钮

  2. 显示权限对话框。

  3. 如果用户在 5 秒内没有点击接受/拒绝

预期结果:应关闭对话框并选择拒绝选项。

任何帮助,将不胜感激。

另外请让我知道,如果这甚至可能这样做吗?

标签: androidruntime-permissions

解决方案


这确实是一个有效的边缘情况,如下所述。

解决方案

sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

为什么要关闭权限对话框?

假设用户启动您的应用程序并立即显示权限对话框,例如来自片段。然后用户切换到另一个应用程序,从该应用程序向您的应用程序发送新意图,例如Intent.ACTION_VIEW. 然后,您可能希望在显示权限对话框之前更改/重新排列 UI:

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    if (isShowingPermissionDialog() {
        // Handle this intent after permisson dialog is dismissed!
        mPendingIntent = intent;
    } else {
        // This could interfere with the expected permission
        // callback of the active fragment etc.
        changeActiveFragment();
    }
}

或者,如果您想明确关闭权限对话框:

private void closeSystemDialogs() {
    sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    closeSystemDialogs();

    changeActiveFragment();
}

推荐阅读