取消通过通知启动的运行时权限请求

use*_*408 7 permissions android android-6.0-marshmallow

我需要从我的应用程序中的几个非UI组件访问位置.由于应用程序可能没有所需的权限,因此我在如何从Android Marshmallow中的服务请求权限的答案中实现了一个解决方案:如果应用程序没有权限,则会显示通知.点击该通知将使用户变为空Activity,这将在顶部显示运行时权限对话框.

但是,我现在遇到以下问题:如果用户在没有做出选择的情况下解除该对话框(例如通过点击Home)并稍后调出我的应用程序的任何其他活动,则会重新显示运行时权限对话框而不是所需的活动.

这是我的通知代码:

    Intent permIntent = new Intent(context, PermissionRequestActivity.class);
    permIntent.putExtra(Const.KEY_RESULT_RECEIVER, resultReceiver);
    permIntent.putExtra(Const.KEY_PERMISSIONS, permissions);
    permIntent.putExtra(Const.KEY_REQUEST_CODE, requestCode);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    stackBuilder.addParentStack(PermissionRequestActivity.class);
    stackBuilder.addNextIntent(permIntent);

    PendingIntent permPendingIntent =
            stackBuilder.getPendingIntent(
                    0,
                    PendingIntent.FLAG_UPDATE_CURRENT
                    );

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
    .setSmallIcon(notificationIcon)
    .setContentTitle(notificationTitle)
    .setContentText(notificationText)
    .setOngoing(true)
    .setAutoCancel(true)
    .setWhen(0)
    .setContentIntent(permPendingIntent)
    .setStyle(null);

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(requestCode, builder.build());
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在Activity停止时中止运行时权限对话框?