1

calendar現在、データベースに保存したオブジェクトを使用して、Google にイベントを追加しようとしています。データベースに保存される日付は Date の形式で保存され、時刻は文字列として保存されます。

現在、イベントの時間部分以外はすべて機能しています。日付は正しく渡されていますが、時刻はデフォルトで 0:00 になっています。時間が適切に経過するようにするにはどうすればよいですか?

@Override
public void onClick(View arg0) {
if(arg0.getId() == R.id.btnAddToCal)
 { 

    long startTime = 0, endTime=0;

    String startDate = blankevent.EventDate;
    try {
        Date date = new SimpleDateFormat("yyyy-MM-dd").parse(startDate);
        startTime=date.getTime();
    }
    catch(Exception e){ }   


    Calendar cal = Calendar.getInstance();              
    Intent calintent = new Intent(Intent.ACTION_EDIT);
    calintent.setType("vnd.android.cursor.item/event");
    calintent.putExtra("eventLocation", blankevent.EventLocation);
    calintent.putExtra("title", blankevent.EventName);
    calintent.putExtra("description", blankevent.EventDetails);

    calintent.putExtra("beginTime",startTime);
    calintent.putExtra("dtstart", blankevent.EventTime);

  startActivity(calintent);
   return;
 }

実際の問題領域のスクリーンショットを添付しました。日付は正しいのですが、時刻が間違っています。

ここに画像の説明を入力

解決済みコード

@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Log.e("cal","sel2");
    if(arg0.getId() == R.id.btnAddToCal)
     { 

        String startDate = blankevent.EventDate;
        String startHour = blankevent.EventTime;
        Date fulldate = null;

        try {
            fulldate = new SimpleDateFormat("yyyy-MM-dd-HH:mm").parse(startDate+"-"+startHour);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        Calendar cal = Calendar.getInstance();              
        Intent calintent = new Intent(Intent.ACTION_EDIT);
        calintent.setType("vnd.android.cursor.item/event");
        calintent.putExtra("eventLocation", blankevent.EventLocation);
        calintent.putExtra("title", blankevent.EventName);
        calintent.putExtra("description", blankevent.EventDetails);
        calintent.putExtra("beginTime",  fulldate.getTime());   
        calintent.putExtra("endTime",fulldate.getTime()+60*60*1000);


      startActivity(calintent);
       return;
     }
4

1 に答える 1

2

Starttime はミリ秒である必要があります。また、意図した追加フィールド名を実際に取得できません。

dd--MM--YYYY のみを解析するため、時間は 00:00 のままで、イベントのデフォルトの期間は 1 時間です。したがって、おそらく Date オブジェクトの Time (startTime) を設定してから、startTime.getMillis(); を呼び出す必要があります。

String startDate = blankevent.EventDate;
String startHour = blankevent.EventTime;
Date date = new SimpleDateFormat("yyyy-MM-dd-HH:mm").parse(startDate+"-"+startHour);

また、www.developer.com からのクリーンな例を次に示します By Lauren Darcey & Shane Conder

Intent calIntent = new Intent(Intent.ACTION_INSERT);
calIntent.setData(Events.CONTENT_URI);
calIntent.putExtra(Events.TITLE, "Google IO Afterparty");
calIntent.putExtra(Events.EVENT_LOCATION, "The W Hotel Bar on Third Street");
calIntent.putExtra(Events.DESCRIPTION, "Hang out after Google IO for a drink and geeky conversation.");
Calendar startTime = Calendar.getInstance();
startTime.set(2012, 5, 29, 18, 0);
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 5, 29, 22, 30);
calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
startTime.getTimeInMillis());
calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
endTime.getTimeInMillis());
startActivity(calIntent);
于 2013-02-15T15:07:59.717 に答える