从sqlite db按日期启动通知
在我的应用程序中,我将日期(dd-mm-yyyy)保存在SQLite数据库中,我希望在该日期前1天启动te通知。 我是不是做错了什么,通知没有开始从sqlite db按日期启动通知,sqlite,notifications,alarmmanager,Sqlite,Notifications,Alarmmanager,在我的应用程序中,我将日期(dd-mm-yyyy)保存在SQLite数据库中,我希望在该日期前1天启动te通知。 我是不是做错了什么,通知没有开始 public class AlarmReceiver extends BroadcastReceiver { BHItem currentItem; @Override public void onReceive(Context context, Intent intent) { NotificationManager mNM; m
public class AlarmReceiver extends BroadcastReceiver {
BHItem currentItem;
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager mNM;
mNM = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher, "Return time",System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0);
notification.setLatestEventInfo(context, context.getText(R.string.alarm_service_label), currentItem.getItem() + " return to: " + currentItem.getReturndate(), contentIntent);
mNM.notify(R.string.alarm_service_label, notification);
notification.flags|= Notification.FLAG_AUTO_CANCEL;
}
}
AlarmManager类
在这里,我试图将当前日期与数据库中的日期进行比较,如果它是在
public class AlarmService {
private BHItem alarmDate;
private Context context;
private PendingIntent mAlarmSender;
public AlarmService(Context context) {
this.context = context;
mAlarmSender = PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmReceiver.class), 0);
}
public void startAlarm(){
Calendar currentDate = Calendar.getInstance();
Calendar myDate= Calendar.getInstance();
try {
Date convDate = new SimpleDateFormat("dd-MM-yyyy").parse(alarmDate.getReturndate());
myDate.setTime(convDate);
if (currentDate.compareTo(myDate)== 1) {
long dd = myDate.getTimeInMillis();
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, dd, mAlarmSender);
}
} catch (Exception e) {
// Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
我也试着用这个来启动闹钟,但还是一无所获
公共空间startAlarm(){
我在舱单上加了一句
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<application...
<receiver android:process=":remote" android:name="AlarmReceiver"></receiver>
我已测试此代码,onReceive不会被触发。为了使其正常工作,您应该在清单中的接收器配置中设置一个意图筛选器。然后在设置报警的意图时使用相同的筛选器。在清单中设置接收器,如下所示:
<receiver
android:name="AlarmReceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.NOTIFY" />
</intent-filter>
</receiver>
为此:
mAlarmSender = PendingIntent.getBroadcast(context, 0, new Intent("android.intent.action.NOTIFY"), 0);
这些更改使其在API 15上工作。请确保先测试此解决方案,并在几秒钟后将短时警报设置为激发,这样调试它会容易得多
mAlarmSender = PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmReceiver.class), 0);
mAlarmSender = PendingIntent.getBroadcast(context, 0, new Intent("android.intent.action.NOTIFY"), 0);