Android如何打开请勿打扰(dnd)编程

如何在Android中以编程方式打开/closures“请勿打扰”(dnd)? 是希望这会给我一些东西,但不是:

Settings.System.putInt(getContentResolver(), Settings.System.DO_NOT_DISTURB, 1); 

Solutions Collecting From Web of "Android如何打开请勿打扰(dnd)编程"

我发现这个解决scheme:

 NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE); 

这个需要:

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

据我所知,在执行requestPermissions()时,不会popup一个请求对话框。 必须通过设置菜单设置 – >声音和通知 – >免打扰访问。

这是在SDK 23棉花糖。

只是提高约旦帕森斯的答案。 要设置优先级,您需要一个只能通过询问用户打开一个活动才能获得的权限。 系统会提示您是否要为您的应用程序启用免打扰许可。

这个活动可以这样打开:

  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); } 

在授予此权限后,可以更改此设置。

对于那些与LG G4挣扎的人来说,有一个解决方法。

LG没有设置设置选项授予

 permission.ACCESS_NOTIFICATION_POLICY 

因此,它收到时崩溃

 ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS 

不过,LG确实设置了授予的选项

 permission.BIND_NOTIFICATION_LISTENER_SERVICE 

一旦这个许可获得批准,也是如此

 permission.ACCESS_NOTIFICATION_POLICY 

(至less在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>