gpt4 book ai didi

android - 如何在每个特定时间在android上启动B类?

转载 作者:行者123 更新时间:2023-11-29 17:01:38 28 4
gpt4 key购买 nike

我想在特定时间使用String start = "16:00";,开始另一个 Activity 。

我必须使用 String start = "16:00"

MainActivity.class

String start = "16:00";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

setAlarmTime(this);
}

private void setAlarmTime(Context context) {
String[] strStart = start.split(":") // delete ":"

Calendar cal_start = Calendar.getInstance();

cal_start.set(Calendar.HOUR_OF_DAY, Integer.parseInt(strStart[0])); // hour
cal_start.set(Calendar.MINUTE, Integer.parseInt(strStart[1])); //minute

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent, 0);
alarm.set(AlarmManager.RTC, cal_start.getTimeInMillis(), pIntent);
}

我想在应用程序运行时,当前时间 4 点,启动 AlarmActivity.class

但它不起作用。

如何在每个特定时间在android上启动另一个 Activity ?

@更新

 private void setAlarmTime(Context context) {

String[] strStart = start.split(":");

Calendar cal_start = Calendar.getInstance();

cal_start.set(Calendar.HOUR_OF_DAY, Integer.parseInt(strStart[0]));
cal_start.set(Calendar.MINUTE, Integer.parseInt(strStart[1]));

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

alarm.set(AlarmManager.RTC_WAKEUP, cal_start.getTimeInMillis(), pendingIntent);

此源无效。不工作 alarmManager。

最佳答案

如果您需要唤醒设备,即使它关闭,请考虑使用 AlarmManager.RTC_WAKEUP。

alarm.set(AlarmManager.RTC_WAKEUP, cal_start.getTimeInMillis(), pIntent);

AlarmManager.RTC 不会唤醒设备。

引用:https://developer.android.com/reference/android/app/AlarmManager.html#RTC

顺便说一句,您不需要将上下文引用传递给方法:

PendingIntent pIntent = PendingIntent.getActivity(this /*can use this as it is a context already */ , 0, intent, 0);

更新:也请设置cal_start的秒和毫秒;否则它将是您获得日历实例的值。

cal_start.set(Calendar.SECOND, 0);
cal_start.set(Calendar.MILLISECOND, 0);

更新 2:它在我这边有效,你可以尝试添加

<uses-permission android:name="android.permission.WAKE_LOCK" />

在 list 中。

顺便说一句,如果你想让这个闹钟每天重复

AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal_start.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pIntent);

关于android - 如何在每个特定时间在android上启动B类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42549642/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com