Android 托管个人资料中的请勿打扰 (DnD) 权限

Android Do not Disturb (DnD) permission in managed profile

我有以下问题:

我的应用程序分布在 MDM 系统上,并在 Android 中运行以供工作。 在某些情况下,应用程序必须暂时终止 DnD 模式。为此,用户必须在应用启动时授予 DnD 权限。

到目前为止一切顺利。如果我在非托管区域安装该应用程序,该应用程序会显示在列表中并且可以毫无问题地授予权限。 通过 MDM 系统分发应用程序后,该应用程序将不再出现在列表中,并且无法授予权限。所有权限都已在 MDM 系统中授予。例如,我在 MDM 系统上分发了 Google 应用程序。此应用出现在列表中。

在清单中我设置了以下权限:

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

当应用程序启动时,执行以下代码:

NotificationManager nm = (NotificationManager).getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M && !nm.isNotificationPolicyAccessGranted()) {
  Intent intent = new
  Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
  startActivity(intent);
}

该问题仅在 DnD 权限下出现。所有其他权限,如覆盖权限,显示没有问题。

希望大家能帮帮我。

试试这个 -

Intent intent = new Intent("android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS");
    startActivity(intent);

我还没有找到问题的合适解决方案,但我找到了在工作区中显示应用程序的解决方法。如果在私有区域中也安装了相同的应用程序,则该应用程序似乎仅显示在对话框中。 如果应用程序没有安装在私人区域,它也不会出现在工作区。 我的解决方法是在私人和工作区域安装该应用程序。在工作区的权限被授予后,我将应用程序从私有区域中移除。就像我说的,这不是解决问题本身的办法,但它奏效了。 对我来说,这看起来像是 Android 中的错误,因为对于所有其他权限,该应用程序出现在列表

根据Android documentation:不可能

Users can grant and deny access to Do Not Disturb configuration from here. Managed profiles cannot grant Do Not Disturb access.

我们在 SignOnSite 应用程序中遇到了同样的问题。除非我们也在个人 space 中也安装该应用程序,否则无法访问用于紧急疏散的 DnD 功能。这样做很冒险,所以最终只在个人 space 中安装了该应用程序。 将 Intune 用于我们的 MDM。

显然 Google 问题跟踪器上报告了关于此的问题 https://issuetracker.google.com/issues/77939714

这是来自Google的回复:

Status: Won't Fix (Intended Behavior) 11:41AM You can not change DND settings from a managed profile app. We will be updating the documentation to clarify this.

还有一个回复说:

Microsoft Intune has released their fully managed Android Enterprise profile setup for Android Devices. ... and it can now access and grant the DnD permission. Not sure if its the fact that we have gone to fully managed devices or if something else has changed.

我相信这实际上是因为该设备是完全托管的。

所以根据我的理解有两种选择:

  • 完全托管的设备(需要在 phone 上恢复出厂设置)
  • 在个人资料中安装它