2014-04-04 49 views
0

我需要將事件設置爲本機日曆。日期和時間將由用戶輸入提供。如何將日期和時間值傳遞給本機日曆? 我嘗試了很多,Calendar.getInstance()將有助於設置當前的日期和時間。 但我想爲用戶提供的日期和時間設置事件。任何人都可以在這方面幫助我? 我想要特定的代碼。如何在android中動態設置事件到本地日曆?

回答

0
package com.example.calendar_four_one; 

import java.sql.Date; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.provider.CalendarContract; 
import android.provider.CalendarContract.Events; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

Button click; 
EditText date,time; 
int years,months,days,hours,mins,seconds; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    date=(EditText) findViewById(R.id.editTextDate); 
    time=(EditText) findViewById(R.id.editTextTime); 


    click=(Button) findViewById(R.id.button1); 

    click.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

      String d=date.getText().toString(); 

      String t=time.getText().toString(); 

      List <String> dateTime = new ArrayList<String>(); 
      dateTime = getDateAndTime(d,t); 
      //String str[] = new String[dateTime.size()]; 

      years = Integer.parseInt(dateTime.get(0)); 
      months = Integer.parseInt(dateTime.get(1)); 
      days = Integer.parseInt(dateTime.get(2)); 
      hours = Integer.parseInt(dateTime.get(3)); 
      mins = Integer.parseInt(dateTime.get(4)); 
      seconds = Integer.parseInt(dateTime.get(5)); 

      Toast.makeText(getApplicationContext(), ""+years, Toast.LENGTH_LONG).show(); 

      //SimpleDateFormat formatter=new SimpleDateFormat("MM/dd/yyyy hh:mm:ss"); 

      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(years, months-1, days, hours, mins,seconds); // (Year-2013)(Day-Wed [i.e:-3rd DOW]) (Date-16th) 15:50 
      Calendar endTime = Calendar.getInstance(); 
      endTime.set(years, months-1, days, hours, mins+30,seconds); // 18:30 
      calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, 
      startTime.getTimeInMillis()); 
      calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, 
      endTime.getTimeInMillis()); 
      startActivity(calIntent); 

      Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show(); 

     } 
    }); 
} 


public List<String> getDateAndTime(String date,String time) 
{ 

    List<String> list = new ArrayList<String>(); 

    String[] dateStr = date.split("/"); 
    String[] timeStr = time.split(":"); 

    for(String str:dateStr) 
     list.add(str); 

    for(String str:timeStr) 
     list.add(str); 

    return list; 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

} 



package com.example.calendar_four_one; 

import android.app.NotificationManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.media.Ringtone; 
import android.media.RingtoneManager; 
import android.net.Uri; 
import android.os.Vibrator; 
import android.support.v4.app.NotificationCompat; 
import android.view.Gravity; 
import android.widget.Toast; 

public class ReminderReceiver extends BroadcastReceiver { 
// Vibrator object 
public Vibrator vibrator; 
long[] pattern = { 0L, 250L, 200L, 250L, 200L, 250L, 200L, 250L, 200L, 
    250L, 200L, 250L, 200L, 250L, 200L }; 
// Ringtone object 
Uri ringT; 
Ringtone ringTone; 

@Override 
public void onReceive(Context context, Intent intent) { 
String remindText = intent.getStringExtra("text"); 
//Unique notification id for every alarm 
int receiverID = intent.getIntExtra("AlrmId", 0); 
// Notification creation 
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
     context).setSmallIcon(android.R.drawable.ic_popup_reminder) 
     .setContentTitle("Reminder").setContentText(remindText); 

// Create vibrator pattern 
vibrator = (Vibrator) context 
     .getSystemService(Context.VIBRATOR_SERVICE); 
vibrator.vibrate(pattern, -1);// No repetition 

// Notification tone creation and play 
ringT = RingtoneManager 
     .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
ringTone = RingtoneManager.getRingtone(context, ringT); 
ringTone.play(); 
// Create toast and show on center of the screen 
Toast toast = Toast.makeText(context, remindText, Toast.LENGTH_LONG); 
toast.setGravity(Gravity.CENTER, 0, 0); 
toast.show(); 
// end of toast... 

// Show status bar notification 
NotificationManager mNotificationManager = (NotificationManager) context 
     .getSystemService(Context.NOTIFICATION_SERVICE); 
mNotificationManager.notify(receiverID, mBuilder.build()); 

}}

此代碼終於爲我工作..

0

試試這個

Intent intent = new Intent(Intent.ACTION_EDIT); 
intent.setType("vnd.android.cursor.item/event"); 
intent.putExtra("beginTime", startTime); 
intent.putExtra("allDay", true); 
intent.putExtra("rrule", "FREQ=YEARLY"); 
intent.putExtra("endTime", endTime); 
intent.putExtra("title", "title"); 
startActivity(intent); 

開始時間和結束時間是時間值

+0

究竟startTime和endTime包含??他們是用戶定義的變量保存日期和時間值? – user3350830

+0

是的,那是時間值,不需要結束時間。開始時間是提醒時間 –

相關問題