如何在Android中以编程方式打开/关闭“请勿打扰”(dnd)?是希望这会给我一些东西,但事实并非如此:
Settings.System.putInt(getContentResolver(), Settings.System.DO_NOT_DISTURB, 1);
答案 0 :(得分:30)
我找到了这个解决方案:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
需要:
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
据我所知,在执行requestPermissions()时,不会弹出请求对话框。它必须通过设置菜单设置 - &gt;授予。声音&amp;通知 - &gt;请勿打扰访问。
这是在SDK 23 Marshmallow上。
答案 1 :(得分:21)
改善Jordan Parsons的答案。 要设置优先级,您需要一个权限,只有通过要求用户打开活动才能获得该权限。 系统将提示您是否要为您的应用程序启用“请勿打扰”权限。
此活动可以这种方式打开:
Grid1
授予此权限后,可以更改此设置。
答案 2 :(得分:4)
对于那些与LG G4斗争的人来说,有一个解决方法。
LG没有设置授予
的设置选项permission.ACCESS_NOTIFICATION_POLICY
因此在收到
时会崩溃ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS
然而,LG确实设置了授予
的选项permission.BIND_NOTIFICATION_LISTENER_SERVICE
一旦获得此许可,
也是如此permission.ACCESS_NOTIFICATION_POLICY
(至少在LG G4上)。此选项位于“设置” - >“常规” - >“安全性” - >“通知”访问权限下。要让用户能够授予此权限,您的应用需要申请。这是通过声明您的服务来完成的,假设您的应用程序有一个,如清单中所示:
<service android:name="myService"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>