0
我需要將事件設置爲本機日曆。日期和時間將由用戶輸入提供。如何將日期和時間值傳遞給本機日曆? 我嘗試了很多,Calendar.getInstance()將有助於設置當前的日期和時間。 但我想爲用戶提供的日期和時間設置事件。任何人都可以在這方面幫助我? 我想要特定的代碼。如何在android中動態設置事件到本地日曆?
我需要將事件設置爲本機日曆。日期和時間將由用戶輸入提供。如何將日期和時間值傳遞給本機日曆? 我嘗試了很多,Calendar.getInstance()將有助於設置當前的日期和時間。 但我想爲用戶提供的日期和時間設置事件。任何人都可以在這方面幫助我? 我想要特定的代碼。如何在android中動態設置事件到本地日曆?
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());
}}
此代碼終於爲我工作..
試試這個
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);
開始時間和結束時間是時間值
究竟startTime和endTime包含??他們是用戶定義的變量保存日期和時間值? – user3350830
是的,那是時間值,不需要結束時間。開始時間是提醒時間 –