14

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

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

4

3 回答 3

8

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

在 Android 上以编程方式关闭应用程序的通知

Android:是否可以以编程方式删除系统管理的通知?

于 2013-07-16T03:19:31.800 回答
1

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

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

下面的代码片段用于 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

在此处输入图像描述

于 2017-09-06T14:40:14.767 回答
0

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

于 2013-07-16T03:19:12.097 回答