java - Android 6.0 以上版本无法通过广播接收器获取通知

标签 java android notifications broadcastreceiver android-version

我正在尝试使用 SQLite 数据库构建一个离线提醒 Android 应用程序。对于通知,我使用警报管理器来调用广播接收器,但不幸的是,接收器没有触发,所以我无法在6.0及以上版本中收到提醒通知

我的 list 包括:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />

enter code here
   <receiver
        android:name=".Util.BroadcastManager"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.NOTIFY" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
            <!--
            <action android:name="ALARM" />
            <action android:name = "android.hardware.usb.action.USB_STATE" />
            <category android:name="android.intent.category.APP_CALENDAR" />
            -->
        </intent-filter>
    </receiver>

警报管理器调用为:

           if (alarm) {
        Intent itAlarm = new Intent("ALARM");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, itAlarm, 0);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.add(Calendar.SECOND, 3);
        AlarmManager alarme = (AlarmManager) getSystemService(ALARM_SERVICE);
        int interval = 60000;
        alarme.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
    }else {
        Intent alarmIntent = new Intent(MainActivity.this, BroadcastManager.class);
        alarmIntent.setAction(Intent.ACTION_MAIN);
        alarmIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent, 0);

        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        int interval = 60000;

        manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
    }

    br = new BroadcastManager();
    IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
    filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
    this.registerReceiver(br, filter);

最佳答案

尝试使用通知库来制作适用于每个 API 的自定义通知。

警报通知

这是一个自定义库

实现“com.tapadoo.android:alerter:5.0.0”

Here is the link

我正在当前的项目中使用它,并且运行良好。

关于java - Android 6.0 以上版本无法通过广播接收器获取通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59081470/

相关文章:

java - Java中的通知系统

java - 如何保护一种方法免受不同请求的影响

java - 如何在Android Studio中管理文件

android - 数据库未存储在 Android 手机设备上

android - Android 忽略 FCM 通知优先级

Java Swing TrayIcon 气球消息 - 实现与主图标不同的 Action 监听器?

java - Maven Docker 插件连接被拒绝

java - 如果 Annotation 是一个接口(interface),那么它如何扩展一个 Object 类?

java - Scala 范围、初始化

ios - 如何在应用程序未运行时安排某些事件的本地通知?