我正在尝试实施一个提醒应用程序。我有所有提醒细节存储在sqlite数据库中,如id,title,dateInfo,timeInfo等。
我想在适当的时间通知用户有关我将使用AlarmManager的提醒。
以下给出的步骤是否可行。
在pendentingIntents中提供row的id作为requestCode。 然后设置一旦触发就会调用服务的警报。 该服务将使用此id从数据库中获取数据。
如果这是可行的,任何人都可以给我一个代码片段。
任何帮助都将受到高度赞赏
答案 0 :(得分:1)
您可以简单地将rowId作为额外内容放入被调用的intent中。以下是可能有用的代码段:
Intent i = new Intent(this, YourServiceOrActivity.class);
i.putExtra("rowId", rowId);
PendingIntent pi = PendingIntent.getActivity(this, 123123, i, 0); //Notice the random requestCode '123123' as it doesn't matter, yet.
您可以按如下方式设置闹钟:
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, AlarmManager.INTERVAL_DAY, pi);
//Set the alarm to wake up the device after one day calling the pending intent 'pi'.
最后,您可以按照以下方式调用intent(onCreate(),例如,如果intent是Activity)获取rowId:
Bundle extras = getIntent().getExtras();
if (extras != null) rowId = extras.getInt("rowId", 0); //Be safe
希望这有帮助。
答案 1 :(得分:1)
正如其他人提到的,我会把 rowId
作为额外的,但是不要误会 - 正如 PendingIntent 文档中所写,意图是不同的,如下所示:
如果您确实需要多个不同的 PendingIntent 对象同时处于活动状态(例如用作同时显示的两个通知),那么您需要确保它们有一些不同的东西可以关联它们具有不同的 PendingIntent。这可以是 Intent 考虑的任何 Intent 属性。 filterEquals,或不同的请求代码整数提供给 getActivity(Context, int, Intent, int), getActivities(Context, int, Intent[], int), getBroadcast(Context, int, Intent, int) , 或 getService(Context, int, Intent, int).
因此,如果您对同一行的所有意图使用相同的 id
请求使用不同的数据,那么您可能会因过时/重复的数据问题而迷失方向。
答案 2 :(得分:0)
根据PendingIntent上的文档,未使用requestCode
方法的getService(...)
。我不清楚它发生了什么,所以我不会以任何方式依赖它。
只需将行ID作为额外内容传递给意图。