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

想写一个代码只在特定时间发送通知,但不知何故alarmManager不工作,它显示了一些错误

葛威
2023-03-14

在选定的时间没有发送通知,当我运行代码时,直接显示了通知并显示了错误。下面是错误消息:E/NotificationManager:notifyAsUser:tag=null,id=12345,user=UserHandle{0}。我以为错误消息是由于生成的。版本SDK_INT,但添加之后,错误消息仍然存在。

将所有这些放在onCreate下:

 Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 13);
        calendar.set(Calendar.MINUTE,9)

;

    Intent intent = new Intent ();
    intent.setAction("com.example.Broadcast");

    PendingIntent contentIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

//PendingIntent alarmIntent=PendingIntent.get广播(this,0, Intent,0);

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, contentIntent);

这里是延伸。

public class wakeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    setNotification(context);


}


protected void setNotification(Context context){

    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            new Intent(context, MainActivity.class), 0);

    String ChannelId = "12345";
    int uniID = 12345;

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context,ChannelId )
            .setSmallIcon(R.mipmap.ic_launcher_round)
            .setContentTitle("Hi")
            .setAutoCancel(true)
            .setWhen(System.currentTimeMillis())
            .setContentText("Please Rate.");


    builder.setContentIntent(contentIntent);

////向设备发送通知NotificationManager=(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        builder.setChannelId("com.myApp");
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel(
                "com.myApp",
                "My App",
                NotificationManager.IMPORTANCE_DEFAULT
        );
        if (manager != null) {
            manager.createNotificationChannel(channel);
        }
    }
    manager.notify(uniID, builder.build());

}

}

有人能帮我弄一下吗?

共有1个答案

丌官玺
2023-03-14

你很困惑。

在您的代码中,您调用NotificationManager.notify()。这将立即显示通知

你会:

Intent intent = new Intent(this, MainActivity.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(this,0, intent,0);

这不起作用。您已经创建了一个PendingIntent,它将使用Intent通过广播发送,该Intent适用于活动!您希望发生什么?您希望启动活动还是触发BroadcastRecencer

我想你要做的是:

  • BroadcastReceiver创建一个Intent,使用getBroadcast()将其包装在一个pendingent中,并将其传递给AlarmManager,以便在未来某个时间设置广播Intent
  • 创建一个扩展BroadcastReceiver的类。在onReceive()中创建通知并调用通知管理器。notify()发布通知。在通知中,您可以设置一个挂起内容,打开您的活动,这样,如果用户点击通知,您的活动将启动。要执行此操作,请调用pendingent。getActivity()并传递包含main活动的Intent。类
 类似资料:
  • 我创建了一个调查页面,但是当有人没有学分时,我想使用react-通知向用户显示通知,我已经测试了这个按钮,并且它可以独立工作,但是当我在onClark事件中使用react-router-dom将其添加到标签中时,函数运行,但通知不显示。这是代码: 所以,当我在上面测试时: 它显示按钮,单击时不显示信用,它会记录0信用,但是,它只是重定向到引用的页面,而不显示创建的通知。 在我这边,无论是终端还是控

  • 我在我的Spring MVC4项目中使用了Amazon推送通知。我每天早上8点用CronTrigger向Android应用程序发送推送通知。我还将Timezone与CronTrigger一起使用,这样用户就可以根据各自的时区获得通知。 下面是我的webconfig.java: 更新:在Cron表达式中有一个修正。我纠正了。 但问题还没有解决

  • 这是舱单 这是我的注册令牌类 这是我的Firebase服务类

  • 我的程序对一些输入显示不正确的结果,对另一些输入显示正确的结果。我不知道我在代码中做错了什么。 在我的代码中,我想将一个字符串输入作为一个标签,如果它的每两个连续数字的和是偶数并且它的字母不是元音,那么它就是有效的。我认为字母“A”,“E”,“I”,“O”,“U”,“Y”是这个问题的元音。 输入格式:第一行包含一个长度为9的字符串。格式为“DDXDDD-DD”,其中D代表一个数字(非零),X为大写

  • 我的应用程序生成了一个通知,但我为该通知设置的图标没有显示。取而代之的是一个白色的方块。 我试过调整图标的png大小(尺寸720x720,66x66,44x44,22x22)。奇怪的是,当使用较小的尺寸时,白色的正方形更小。 我搜索了这个问题,以及生成通知的正确方法,从我读到的代码来看,应该是正确的。不幸的是,事情并不像他们应该的那样。

  • 在所有Amadeus自助服务API中,只有一些机场代码有效。例如,“FRA”可以工作,但“TXL”不能。这是因为API是Beta版,我只使用沙盒版本吗? 示例: https://test.api.amadeus.com/v1/shopping/flight-destinations?origin=FRA 作品 https://test.api.amadeus.com/v1/shopping/fli