【发布时间】:2015-12-12 03:14:07
【问题描述】:
如何以编程方式确定用户是否可以看到权限对话框,以便我知道在这种情况下该怎么做?
【问题讨论】:
-
AFAIK 没有干净的方法来检测屏幕上是否可见权限对话框。通过 hack,您可以
标签: android android-permissions android-6.0-marshmallow
如何以编程方式确定用户是否可以看到权限对话框,以便我知道在这种情况下该怎么做?
【问题讨论】:
标签: android android-permissions android-6.0-marshmallow
权限对话框是放置在活动堆栈顶部的活动。因此,当您调用 requestPermission() 方法时,Activity 实现会要求 PackageManager 构建将启动此活动对话框的意图。这个意图有ACTION_REQUEST_PERMISSIONSaction。
可能您需要监听活动堆栈更改并检查活动意图是否具有ACTION_REQUEST_PERMISSIONS 操作。我不确定获取正在运行的任务是否会给你列出这个活动,因为我自己没有尝试过,只是为了让你继续。
【讨论】:
@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
}
}`
`
【讨论】: