以编程方式禁用/启用通知

Posted

技术标签:

【中文标题】以编程方式禁用/启用通知【英文标题】:Programmatically disabling/enabling notifications 【发布时间】:2013-07-16 03:14:19 【问题描述】:

有没有办法以编程方式禁用单个程序的通知?我想建立一个我设备上安装的所有程序的列表,然后检查我不想接收通知的那些程序,然后单击一个按钮来禁用/启用它们。

我正在尝试构建一个应用程序,该应用程序允许我通过单击按钮启用部分/所有通知,并通过单击按钮或在预定时间段后重新启用它们。安卓支持吗? NotificationManager 似乎没有这些属性。

【问题讨论】:

你可以看到下面的答案可能对你有帮助***.com/questions/9367196/… 【参考方案1】:

无法禁用来自其他应用的通知。您只能控制您自己的应用生成的通知。

Turn off notifications of an app programatically on android

Android: is it possible to remove a system-managed notification programmatically?

【讨论】:

【参考方案2】:

您可以通过共享偏好来做到这一点。

您可以在共享首选项中设置通知设置,稍后如果您收到任何消息,您可以决定是否显示通知。

下面的代码片段适用于 ReactNative,但您也可以将其用于原生应用程序

  /**
     * Toggle Notification Setting
     *
     * @param showNotifcation
     */
    @ReactMethod
    public void toggleNotification(boolean showNotifcation) 

        if (showNotifcation) 
            Toast.makeText(reactAppContext, "Notification Enabled", Toast.LENGTH_SHORT).show();
         else 
            Toast.makeText(reactAppContext, "Notification Disabled", Toast.LENGTH_SHORT).show();
        
        getPrefernceHelperInstace().setBoolean(reactAppContext, ENABLE_NOTIFICATION, showNotifcation);
    

稍后在消息服务类中

public class ReactFireBaseMessagingService extends FirebaseMessagingService 

    private NotificationUtils notificationUtils;

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) 

        //Check if Notn are Enabled?
        if (getPrefernceHelperInstace().getBoolean(getApplicationContext(),
                ENABLE_NOTIFICATION, true)) 

          //Show Notification
         else 
            Log.e(TAG, "ReactFireBaseMessagingService: Notifications Are Disabled by User");

        
    

查看代码片段

https://github.com/hiteshsahu/react-native-fcm-android/blob/master/android/app/src/main/java/com/hitesh_sahu/fcm/service/ReactFireBaseMessagingService.java

【讨论】:

马修·皮尔斯问了些别的问题。他想创建一些可以处理全局通知管理器的应用程序。 应用程序关闭时通知不起作用。【参考方案3】:

不,你不能,也许在根设备上,但这是另一回事......

【讨论】:

以上是关于以编程方式禁用/启用通知的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式禁用/启用网络接口

以编程方式启用/禁用捏合以放大 WKWebView 和 viewForZoomingInScrollView

如何在 Swift 中以编程方式启用/禁用菜单对象

如何以编程方式禁用/启用UIBarButtonItem

如何在 iOS 中以编程方式禁用/启用睡眠模式?

Android:以编程方式启用/禁用应用小部件