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
}
}`
`
如何以编程方式确定权限对话框是否对用户可见,以便我知道在这种情况下该怎么做?
权限对话框是一个 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
}
}`
`