我希望我的闹钟在设备重启后恢复/重启。在对 Google 进行大量研究后,我发现如果不将警报保存到数据库,它就无法工作。我有两个问题:
2.我应该如何在重新启动时从数据库中读取警报,因为广播接收器没有收到 BOOT_COMPLETED 意图。
1.如何将警报保存到数据库(如何知道数据库已创建并插入值)?
EDIT:
我已经拥有必要的权限和接收者以及此代码:告诉我要在此代码中更改什么?MainActivity.java
onClick:
int intHrs = SetResetIntervalActivity.intHours;
int intMins = SetResetIntervalActivity.intMinutes;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, intHrs);
calendar.set(Calendar.MINUTE, intMins);
calendar.set(Calendar.SECOND, 0);
Intent myIntent = new Intent(
"com.sang.mobiledata.IntentAction.RECEIVE_RESETCONN_UPDATE");
myIntent.putExtra("FLAG_KEY", false);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, myIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) this
.getSystemService(Context.ALARM_SERVICE);
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
long interval = intHrs * 3600000 + intMins * 60000;
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), interval, pi);
long mins = interval / 60000;
Toast.makeText(
MainActivity.this,
"Data Connection will be reset every " + mins
+ " minute(s).", Toast.LENGTH_SHORT).show();
广播接收器:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(
"android.intent.action.BOOT_COMPLETED")) {
//control never enters here
boolean blnVar=true;
blnVar=false;
....
显现:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:name="com.sang.mobiledata.ResetBroadcastReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.sang.mobiledata.IntentAction.RECEIVE_RESETCONN_UPDATE" />
</intent-filter>
<intent-filter>
<action android:name="com.sang.mobiledata.IntentAction.BOOT_COMPLETED" />
</intent-filter>
</receiver>