2

你好朋友需要帮助!

我正在使用 Android,在我的应用程序中,需要一次设置多个提醒。像这样的东西

 for( int i = 0; i < n; i++)
 {
     // Code to set Reminder
 }

目前我有以下代码,但一次只能用于一个提醒。

 StringTokenizer st=new StringTokenizer(strDateForReminder, "-");
             cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(st.nextToken()));
             cal.set(Calendar.MONTH, Integer.parseInt(st.nextToken())-1);
             cal.set(Calendar.YEAR, Integer.parseInt(st.nextToken()));

             String strTime= textView.getText().toString().trim();
            // Toast.makeText(getApplicationContext(), "strTime= "+strTime, Toast.LENGTH_LONG).show();

             String[] strTimeArray = strTime.split(getResources().getString(R.string.delimiter));
             String[] strFirstTime=strTimeArray[0].split(":");
             cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(strFirstTime[0]));
             cal.set(Calendar.MINUTE, Integer.parseInt(strFirstTime[1]));
             cal.set(Calendar.SECOND, 00);

             Intent intent = new Intent(Intent.ACTION_EDIT);
             intent.setType("vnd.android.cursor.item/event");
             intent.putExtra("beginTime", cal.getTimeInMillis());
             intent.putExtra("endTime", cal.getTimeInMillis()+90*60*1000);
             intent.putExtra("title", "Reminder");
             startActivity(intent);

请帮忙。提前致谢!

4

2 回答 2

5

如果我理解正确,您使用活动的方法只允许您一次添加一个事件,因为用户必须与设备交互才能确认它。您想要的是CalendarContract4.0 中引入的新功能。

来自Android 食谱

如果您不希望用户必须与日历应用程序交互,则基于 ContentProvider 的方法可能更可取。在 Froyo 和 Gingerbread 和 Honeycomb 版本中,您必须“知道”要用于要与之交互的各个字段的名称。我们不介绍此方法,因为它不受官方支持,但您可以在网络上找到我们的贡献者 Jim Blacker 的一篇好文章,网址为http://jimblackler.net/blog/?p=151

对 Ice Cream Sandwich(Android 4,API 级别 14)有效,新的 CalendarContract 类在各种嵌套类中包含制作可移植日历应用程序所需的所有常量。这显示了将日历事件直接插入用户的第一个日历(使用 id 1);显然,在真实应用程序中应该有一个列出用户日历的下拉列表。

public void addEvent(Context ctx, String title, Calendar start, Calendar end) {
    Log.d(TAG, "AddUsingContentProvider.addEvent()");
        
    TextView calendarList = 
        (TextView) ((Activity) ctx).findViewById(R.id.calendarList);
        
    ContentResolver contentResolver = ctx.getContentResolver();
        
    ContentValues calEvent = new ContentValues();
    calEvent.put(CalendarContract.Events.CALENDAR_ID, 1); // XXX pick)
    calEvent.put(CalendarContract.Events.TITLE, title);
    calEvent.put(CalendarContract.Events.DTSTART, start.getTimeInMillis());
    calEvent.put(CalendarContract.Events.DTEND, end.getTimeInMillis());
    calEvent.put(CalendarContract.Events.EVENT_TIMEZONE, "Canada/Eastern");
    Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, calEvent);
        
    // The returned Uri contains the content-retriever URI for 
    // the newly-inserted event, including its id
    int id = Integer.parseInt(uri.getLastPathSegment());
    Toast.makeText(ctx, "Created Calendar Event " + id,
        Toast.LENGTH_SHORT).show();
}
于 2013-07-18T18:39:04.120 回答
-3

我想你要找的是AlarmManager.

于 2013-07-18T10:03:48.877 回答