如果我们为两条不同的消息选择相同的时间间隔会发生什么,它没有发送相应的方式,它采用第一条消息内容并发送第二条短信时间。 我想使用动态方式以相同的间隔发送不同的短信。
MyAlaramactivity.java
else if (mytime.equals("每 5 分钟")) {
editor1.putString("p1",edittextSmsNumber.getText().toString());
editor1.putString("m1",edittextSmsText.getText().toString());
editor1.commit();
edittextSmsNumber.setText(" ");
edittextSmsText.setText(" ");
Calendar calendar = Calendar.getInstance();
calendar.set(datep.getYear(), datep.getMonth(),
datep.getDayOfMonth(),
timep.getCurrentHour(),
timep.getCurrentMinute(), 0);
Intent myIntent1 = new Intent(AndroidAlarmSMS.this,
MyAlarmService.class);
Bundle bundle = new Bundle();
bundle.putInt("service", 1);
myIntent1.putExtras(bundle);
//myIntent1.putExtra("service", "s1");
myIntent1.setData(Uri.parse("timer:myIntent1"));
pendingIntent1 = PendingIntent.getService(
AndroidAlarmSMS.this, 1, myIntent1, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager1.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), 1000 * 60 * 2,
pendingIntent1);
// Millisec * Second *
// Minute
} else if (mytime.equals("Every hour")) {
editor2.putString("p2",edittextSmsNumber.getText().toString());
editor2.putString("m2",edittextSmsText.getText().toString());
editor2.commit();
edittextSmsNumber.setText(" ");
edittextSmsText.setText(" ");
Calendar calendar = Calendar.getInstance();
calendar.set(datep.getYear(), datep.getMonth(),
datep.getDayOfMonth(),
timep.getCurrentHour(),
timep.getCurrentMinute(), 0);
Intent myIntent2 = new Intent(AndroidAlarmSMS.this,
MyAlarmService.class);
Bundle bundle = new Bundle();
bundle.putInt("service", 2);
myIntent2.putExtras(bundle);
myIntent2.setData(Uri.parse("timer:myIntent2"));
pendingIntent2 = PendingIntent.getService(
AndroidAlarmSMS.this, 2, myIntent2, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager2 = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), 1000 * 60 * 3,
pendingIntent2);
This is my service class
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Bundle bundle = intent.getExtras();
//String status= b.getString("service");
status = bundle.getInt("service", 0);
if(i==2)
{
i++;
Toast.makeText(this, "Hiii", Toast.LENGTH_LONG).show();
}
else
{
String share_pref_file = "IMS";
SharedPreferences prefs = getSharedPreferences(share_pref_file,
Context.MODE_PRIVATE);
if(status == 1)
{
String number = prefs.getString("p1", "");
String message = prefs.getString("m1", "");
//String message= prefs.getString("extraSmsText", "");
Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show();
Toast.makeText(this,
number,
Toast.LENGTH_LONG).show();
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, message, null, null);
}
else if (status == 2)
{
String share_pref_file1 = "IMS2";
SharedPreferences prefs2 = getSharedPreferences(share_pref_file1,
Context.MODE_PRIVATE);
String number = prefs2.getString("p2", "");
String message = prefs2.getString("m2", "");
//String message= prefs.getString("extraSmsText", "");
Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show();
Toast.makeText(this,
number,
Toast.LENGTH_LONG).show();
try{
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, message, null, null);
Toast.makeText(this, "Message sent successfully", Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
Toast.makeText(this,
"I will kill you enter correct number",
Toast.LENGTH_LONG).show();
}
}
必须避免 alarammanager 在相同的时间间隔内被覆盖
最佳答案
问题: 待处理的意向是最重要的。
解决方案:
您只需要为每个未决 Intent 提供唯一 ID
示例:
您已经在
中提供了0
作为 id
pendingIntent = PendingIntent.getService(
AndroidAlarmSMS.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
因此不要在下一个未决 Intent 中再次提供 0
,使用 1 和 2
而不是 < strong>0
如下所述:
pendingIntent1 = PendingIntent.getService(
AndroidAlarmSMS.this, 1, myIntent1, PendingIntent.FLAG_UPDATE_CURRENT);
pendingIntent2 = PendingIntent.getService(
AndroidAlarmSMS.this, 2, myIntent2, PendingIntent.FLAG_UPDATE_CURRENT);
希望对您有所帮助!!
关于java - 如何避免警报管理器以相同的时间间隔动态使用不同的消息覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20469499/