如何在Android中以编程方式打开/关闭“请勿打扰”(dnd)?希望这能给我一些东西,但它没有:
Settings.System.putInt(getContentResolver(), Settings.System.DO_NOT_DISTURB, 1);
发布于 2016-02-10 19:28:15
我找到了这个解决方案:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
它需要:
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
据我所知,在执行requestPermissions()时不会弹出请求对话框。它必须通过设置菜单设置->声音和通知->请勿打扰访问权限来授予。
这是SDK 23中的棉花糖。
发布于 2016-03-22 18:25:34
只是改进了乔丹·帕森斯的答案。要设置优先级,您需要一个权限,该权限只能通过询问打开活动的用户来获得。系统将提示一项活动,询问您是否要为您的应用程序启用请勿打扰权限。
此活动可通过以下方式打开:
NotificationManager mNotificationManager = (NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
// Check if the notification policy access has been granted for the app.
if (!mNotificationManager.isNotificationPolicyAccessGranted()) {
Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
startActivity(intent);
}
授予此权限后,可以更改此设置。
发布于 2017-03-08 04:53:35
对于那些为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>
https://stackoverflow.com/questions/31862753
复制相似问题