【问题标题】:Android M detect if permission dialog is visibleAndroid M检测权限对话框是否可见
【发布时间】:2015-12-12 03:14:07
【问题描述】:

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

【问题讨论】:

  • AFAIK 没有干净的方法来检测屏幕上是否可见权限对话框。通过 hack,您可以

标签: android android-permissions android-6.0-marshmallow


【解决方案1】:

权限对话框是放置​​在活动堆栈顶部的活动。因此,当您调用 requestPermission() 方法时,Activity 实现会要求 PackageManager 构建将启动此活动对话框的意图。这个意图有ACTION_REQUEST_PERMISSIONSaction

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

【讨论】:

    【解决方案2】:
    @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
            }
    }`
    

    `

    【讨论】:

    • 我有点晚了,但我刚刚尝试过,它有效!我曾经使用布尔标志来执行此操作,但您的解决方案也可以派上用场。谢谢
    • 请注意,getRunningTasks() 现在已弃用,因此此解决方案在未来可能不可行。
    猜你喜欢
    • 2015-10-30
    • 2015-11-12
    • 2011-11-15
    • 2017-03-31
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    相关资源
    最近更新 更多