Android M 检测权限对话框是否可见

Android M detect if permission dialog is visible

如何以编程方式确定权限对话框是否对用户可见,以便我知道在这种情况下该怎么做?

权限对话框是一个 activity,放在 activity 堆栈的顶部。因此,当您调用 requestPermission() 方法时,Activity 实现要求 PackageManager 构建将启动此 activity 对话框的意图。此意图有 ACTION_REQUEST_PERMISSIONS action.

可能您需要监听 activity 堆栈更改并检查 activity 意图是否有 ACTION_REQUEST_PERMISSIONS 操作。我不确定获得 运行 任务是否会给你这个 activity 列表,因为我自己没有尝试过这个,只是为了让你继续。

@Override
protected void onStart() {
    super.onStart();
        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
        if ("com.android.packageinstaller.permission.ui.GrantPermissionsActivity".equals(cn.getClassName())){
            //permission dialog is displayed
        }
}`

`