当前位置: 首页 > 面试题库 >

特定工作日的Android通知直接关闭

谯皓君
2023-03-14
问题内容

我试图通过使用以下代码来通知在星期四和星期五关闭:此代码适用于星期四

Calendar updateTime = Calendar.getInstance();
updateTime.set(Calendar.HOUR_OF_DAY, 14);
updateTime.set(Calendar.MINUTE, 44);
updateTime.set(Calendar.SECOND, 0);
updateTime.set(Calendar.DAY_OF_WEEK, 5);
if(updateTime.before(new GregorianCalendar())){
    updateTime.add(GregorianCalendar.DAY_OF_MONTH, 7);
}
Intent intent = new Intent(context, Alarm4.class);
intent.putExtra(ONE_TIME, Boolean.TRUE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(), pi);

但是,如果时间已经超过通知时间,则此代码将无法直接弹出通知。

我想念什么?


问题答案:

这样吧

           if (updateTime.getTimeInMillis() < System.currentTimeMillis()

                || updateTime.before(new GregorianCalendar())) {
            updateTime.set(Calendar.HOUR_OF_DAY, hourOfDay + 24);
            updateTime.add(GregorianCalendar.DAY_OF_MONTH, 7);
        }

并设置“警报”的类。

        public class setAlarm {

Context context;

public setAlarm(Context c) {
    // TODO Auto-generated constructor stub
    this.context = c;
}

public void settingAlarm(Calendar calendar, int counter) {
    Intent intent = new Intent(context, AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
            counter, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
            pendingIntent);
}
}

并且Alarm BroadCastReceiver是公共类AlarmReceiver扩展了BroadcastReceiv


er {

private NotificationManager manager;
private int NOTIFICATION_ID;

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Toast.makeText(context, "Alarm Received", Toast.LENGTH_LONG).show();
    manager = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.ic_launcher,
            "Food Time", System.currentTimeMillis());
    Intent intent2 = new Intent(context, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
            intent2, PendingIntent.FLAG_UPDATE_CURRENT);
    notification.setLatestEventInfo(context, "FoodTime",
            "Click to View your food", pendingIntent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    notification.sound = Uri
            .parse("android.resource://"
                    + "com.technogalax.sixsmallmealaday.alarm" + "/"
                    + R.raw.nsound);

    manager.notify(NOTIFICATION_ID, notification);

}
}


 类似资料:
  • 问题内容: 我知道这个问题以前曾被问过,但我已不知所措。 我有一个警报管理器来设置通知: …然后我得到了通知本身即服务: } ....我加入了吐司,以确保我确实要使用此方法。敬酒,但通知没有。我在这里做错了什么?我需要更改清单文件中的内容吗? 问题答案: 没有图标(或标题是?)的通知将不起作用。 我确信我遇到了同样的问题,因为如果您忽略了通知的内容之一,则通知将不会显示。

  • 我已经设置了接收通知的代码,但它不起作用: 我用它在我的主要活动,我尝试了它,因为电话是待机。我该怎么解决?它需要其他代码吗?我遵循了以下指南:http://www.dre.vanderbilt.edu/~schmidt/android/android-4.0/out/target/common/docs/doc-comment-check/guide/topics/ui/notifiers/no

  • 我一直在开发一个与BLE设备交互的应用程序。一切都很好,我可以扫描、连接和使用服务。 我已经阅读了所有的文档,我没有看到任何让开发人员可以选择监听BLE设备的内容。基本上,我想在设备进入BLE设备的范围时触发广播接收器。 我知道我可以不断地扫描它,但电池使用量太高了,我希望即使在我的应用程序没有被使用的时候也能调用它。 是否不支持此功能,或者我是否缺少讨论此功能的文档部分?

  • 我使用RxAndroidBle与kotlin。到目前为止,我可以设置多个通知,我正在接收它们。 如何将通知映射到其特定特征? 到目前为止: 谢谢你

  • 我有一个应用程序有多个mongo配置。这是通过一些@Configuration类实现的,比如 配置1——应用程序 配置2--测试 然后在我的房子里 因此,两个mongo配置连接到本地运行但具有不同数据库的实例。我也尝试过使用不同的地址,但它的行为相同。 不管怎么说,这将通过实体和MongoRepository来使用 回购 然而,当我在某个地方的课堂上使用它时 此对象被写入,而不是我所期望的,因为它

  • 我正在尝试像Android文档解释的那样从通知启动活动,但是当我打开通知然后按后退按钮时,Homeactive(父)不会打开,而是应用程序关闭。我做错了什么?