gpt4 book ai didi

java - 我尝试使用 'AlarmManager'设置闹钟,但没有成功,哪里出了问题?

转载 作者:行者123 更新时间:2023-12-01 11:29:22 26 4
gpt4 key购买 nike

我按照教学尝试注册警报,五秒后应该显示“TEST”,但没有显示任何信息编辑-虽然你想在闹钟响后执行五秒钟,但实际上他们希望在每天的固定时间执行-

我应该完成所有设置,哪里出了问题?

--- AndroidManifest.xml

        <receiver android:name=".AlarmClass" android:process=".abc">//What is the role of .abc?
</receiver>

---MainActivity.java

    public void AddAlarm(View view){
AlarmManager alm;
PendingIntent pen;
Calendar cal;

SimpleDateFormat formatter = new SimpleDateFormat("yyyy;MM;dd;HH;mm;ss");
Date curDate = new Date(System.currentTimeMillis()) ;
String str = formatter.format(curDate);
String[] aArray = str.split(";");//Split time string

cal = Calendar.getInstance();
cal.set(Integer.parseInt(aArray[0]), Integer.parseInt(aArray[1]), Integer.parseInt(aArray[2]), Integer.parseInt(aArray[3]), Integer.parseInt(aArray[4]), Integer.parseInt(aArray[5]) + 3);
Intent intent = new Intent(this,AlarmClass.class);
alm = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
pen = PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_ONE_SHOT);//If I want to set multiple alarms should change the second argument?
alm.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pen);
}

---AlarmCless.java

public class AlarmClass extends BroadcastReceiver {
@Override
public void onReceive (Context context,Intent intent){
Toast.makeText(context, "TEST", Toast.LENGTH_LONG).show();
}

}

<小时/>

而如果我想设置多个闹钟,比如五秒后十秒,传递不同的参数例如

Toast.makeText(context, teststring, Toast.LENGTH_LONG).show();

但是“teststring”显示不一样,怎么办?

最佳答案

Manifest.xml中指定接收者的操作标签

 <receiver android:name=".AlarmClass" android:process=".abc">
<action android:name="your_action" />
</receiver>

此处 android:process=".abc" 指定广播接收器应在其中运行的进程的名称。
声明发送广播的 Intent 。

  Intent intent = new Intent("your_action");
alm = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);

用自己的通知ID声明PendingIntent,因为两个通知不应该有相同的ID,如果它们有相同的ID,它们就会被覆盖。

pen = PendingIntent.getBroadcast(this,notification_id,intent,PendingIntent.FLAG_ONE_SHOT);//If I want to set multiple alarms should change the second argument?

由于您需要在 5 秒后发送广播,现在使用 System.currentTimeMillis()+5000

alm.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+5000,pen);

如果您想在 10 秒后发送另一个广播,请遵循与上述相同的过程,但使用不同的 notification_id 并使用 System.currentTimeMillis()+10000 而不是 System.currentTimeMillis()+5000

关于java - 我尝试使用 'AlarmManager'设置闹钟,但没有成功,哪里出了问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30544581/

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