我按照教学试图注册闹钟,它应该显示“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'看起来不一样,怎么办?
答案 0 :(得分:1)
在Manifest.xml
<receiver android:name=".AlarmClass" android:process=".abc">
<action android:name="your_action" />
</receiver>
此处android:process=".abc"
指定广播接收器应运行的进程的名称
声明发送广播的意图。
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