【发布时间】:2019-01-19 15:43:25
【问题描述】:
我正在尝试使用AlarmManager 和服务来向某个号码发送自动短信。我遵循了一些教程,并写了如下内容:
SwitchPreference testPref = (SwitchPreference) findPreference("key_auto_sms");
SharedPreferences sharedPrefs = getActivity().getSharedPreferences("XXXXXXXXX", MODE_PRIVATE);
testPref.setChecked(sharedPrefs.getBoolean("AutoSMS", false));
testPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if (testPref.isChecked()) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
int curHr = calendar.get(Calendar.HOUR_OF_DAY);
// Checking whether current hour is over 14
if (curHr >= 15)
{
// Since current hour is over 15, setting the date to the next day
calendar.add(Calendar.DATE, 1);
}
calendar.set(Calendar.HOUR_OF_DAY, 15);
calendar.set(Calendar.MINUTE, 1);
calendar.set(Calendar.SECOND, 00);
AlarmManager am = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(getActivity(), AlarmReceiver.class);
final PendingIntent pi = PendingIntent.getBroadcast(getActivity(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
SharedPreferences.Editor editor = getActivity().getSharedPreferences("XXXXXXXXX", MODE_PRIVATE).edit();
editor.putBoolean("AutoSMS", true);
editor.commit();
Toast.makeText(getActivity(), getResources().getString(R.string.Auto_SMS_Enable), Toast.LENGTH_SHORT).show();
} else {
SharedPreferences.Editor editor = getActivity().getSharedPreferences("com.camel.work_list", MODE_PRIVATE).edit();
editor.putBoolean("AutoSMS", false);
editor.commit();
Toast.makeText(getActivity(), getResources().getString(R.string.Auto_SMS_Cancle), Toast.LENGTH_SHORT).show();
Intent intent1 = new Intent(getActivity(), AlarmReceiver.class);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, intent1, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarm = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pendingIntent);
//getActivity().stopService(intent1);
}
return false;
}
});
}
我的广播接收器:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// MY auto sms method.....
}
}
所以问题是闹钟只会工作一次,然后第二天就会停止。
我错过了什么?
【问题讨论】:
标签: android broadcastreceiver alarmmanager android-alarms android-broadcastreceiver