Android: 在授予请勿打扰权限时检测实例
Android: Detect the instance when DO NOT DISTURB permission has been granted
我有一个用例,我需要在用户向我的应用程序授予请勿打扰权限时检测该实例。我在前台有一个服务运行,所以我可以使用这个服务来检测何时授予权限。
我将用户重定向到“请勿打扰”设置,如下所示,这按预期工作:
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& !notificationManager.isNotificationPolicyAccessGranted()) {
builder.setMessage(context.getString(R.string.don_not_disturb_msg))
.setCancelable(false)
.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& !notificationManager.isNotificationPolicyAccessGranted()) {
Intent intent = new Intent(
android.provider.Settings
.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
context.startActivity(intent);
}
dialog.dismiss();
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
是否有 CallBack 方法或 Reciver 可用于在授予“请勿打扰”时检测实例到我的应用程序?
在浏览了官方文档和大量其他参考资料后,我恍然大悟,当应用程序的权限状态发生变化时,并没有回调来检测实例。
PS:
可以查找是否已授予特定权限,但不能查找授予该权限的实例。
我有一个用例,我需要在用户向我的应用程序授予请勿打扰权限时检测该实例。我在前台有一个服务运行,所以我可以使用这个服务来检测何时授予权限。
我将用户重定向到“请勿打扰”设置,如下所示,这按预期工作:
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& !notificationManager.isNotificationPolicyAccessGranted()) {
builder.setMessage(context.getString(R.string.don_not_disturb_msg))
.setCancelable(false)
.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& !notificationManager.isNotificationPolicyAccessGranted()) {
Intent intent = new Intent(
android.provider.Settings
.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
context.startActivity(intent);
}
dialog.dismiss();
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
是否有 CallBack 方法或 Reciver 可用于在授予“请勿打扰”时检测实例到我的应用程序?
在浏览了官方文档和大量其他参考资料后,我恍然大悟,当应用程序的权限状态发生变化时,并没有回调来检测实例。
PS: 可以查找是否已授予特定权限,但不能查找授予该权限的实例。