当前位置: 首页 > 知识库问答 >
问题:

Android Studio通知

李森
2023-03-14

我有一个问题,通知在我的应用程序。我想为一天中的不同时间设置多个通知。例如,让我们采取8点,12点和23点。但是每天只有23点的那个触发。我的代码有什么问题,即使应用程序被杀死,它也能工作吗?这是在我的活动中设置警报的代码

public void myAlarm(int hour, int minute) {

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, minute);
    calendar.set(Calendar.SECOND, 0);


    Intent intent = new Intent(getApplicationContext(), Reminder.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    if (alarmManager != null) {
        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
    }
}

这是我在onCreate中写的

        myAlarm(8, 0);
        myAlarm(12, 0);
        myAlarm(23, 0);

这是我的接收器

public class Reminder extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {
    Intent in = new Intent(context, MySecoundActivity.class);
    in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "Reminder")
            .setSmallIcon(R.drawable.bell)
            .setContentTitle("Notification!")
            .setContentText("Text of notification")
            .setColor(0xfb3ff)
            .setAutoCancel(true)
            .setContentIntent(pendingIntent)
            .setPriority(NotificationCompat.PRIORITY_HIGH);


    NotificationManagerCompat notificationMngr = NotificationManagerCompat.from(context);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = "Reminder";
        String description = "reminder channel";
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel channel = new NotificationChannel("Reminder", name, importance);
        channel.setDescription(description);
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(channel);

    }
    notificationMngr.notify(200, builder.build());
}

接收者在android清单中

<receiver android:name=".Reminder"/>

共有1个答案

连俊智
2023-03-14

这是预期的行为,因为在您的代码中,当您设置报警时,您必须给每个PendingEvent唯一的requestCode,在您的情况下保持不变,即0。因此,当您使用相同的requestCode设置另一个报警时,最后一个报警将更新为新时间,而不是创建新报警。所以只有你的最后一个闹钟响了。因此,在设置警报时,在您的挂起帐篷中。getBroadcast(),而不是0,您可以使用Random类每次生成一个随机数,也可以使用(int)系统。currentTimeMillis(),它始终是一个不同的数字。

 类似资料:
  • 本文向大家介绍AndroidStudio:手势识别,包括了AndroidStudio:手势识别的使用技巧和注意事项,需要的朋友参考一下 一内容:设计一个手写字体识别程序。 二实现 ①建立一个存放手写字体的数据库 ②activity_main.xml 3.MainActivity.java 三效果 以上所述是小编给大家介绍的AndroidStudio手势识别详解整合,希望对大家有所帮助,如果大家有任

  • 我试图在android studio上使用java 1.7版,但不幸的是,它不能正常工作。。。如果在

  • 1. 建立广告位,获取广告位ID 登录系统后台创建APP和广告位,获取AppID 以及 广告位ID 根据需求配置广告位 2. 工程中添加SDK代码 初始化SDK (详细说明) 配置AndroidManifest,声明权限和组件 初始化全局SDK代码 根据创建的广告位样式,添加相应的广告样式的代码 横幅(Banner)广告样式 插屏(Interstitial)广告样式 开屏(Splash)广告样式

  • 问题内容: 我的日历有问题。这是代码: 不能运行我的项目,因为在AndroidStudio显示错误,等…我得到nullPointException在模拟器运行时 它说 必须是以下之一:java.util.Calendar.DAY_OF_MONTHjava.util.Calendar.MONTH等… 我不明白此错误,因为它是其中之一 我有进口 对不起,我错过了它的初始化,但是还有另一个我想使用Cal

  • 我想做一个应用程序,使用谷歌翻译API。自从我添加了 我的构建中的依赖项。gradle我有个错误: 现在必须显式声明注释处理器。发现编译类路径上的以下依赖项包含注释处理器。请将它们添加到annotationProcessor配置中。-自动值-1.2。jar(com.google.auto.value:auto-value:1.2)或者,设置android。defaultConfig。javaCom

  • 前面我们讲了 Gradle 在 Android 项目中的配置,我们提到有一个闭包 signingConfigs 是配置 Android 应用签名信息的。那么今天我们就来讲讲如何通过 AndroidStudio 对 APK 进行签名。 1. 新建 keyStore 文件 我们下面一步步带大家,用 AndroidStudio 来配置签名。 首先顶部菜单栏找到 Build 点击他我们会看到 Genera

  • 本文向大家介绍Android IPC进程间通信详解最新AndroidStudio的AIDL操作),包括了Android IPC进程间通信详解最新AndroidStudio的AIDL操作)的使用技巧和注意事项,需要的朋友参考一下 前言 前面梳理了Android的线程间的通信《Thread、Handler和HandlerThread关系何在?》 ,这些都是在同一个进程中,那进程间的通信,或者说不同的应

  • 问题内容: 我正在尝试在Android Studio中使用Java版本1.7,但是很遗憾,它无法正常工作…如果将版本设置为 但是,当我使用带有字符串的声明语句时,出现了在Java 1.7中应该发生的错误,因此我是否需要设置其他设置? 问题答案: 不,没有设置可更改。Android SDK不支持完整的Java 7语法,因此您不能使用它。 请注意,最新的android版本支持java.nio。*(ja