如何在android中动态地将事件设置为本机日历?
我需要将事件设置为本机日历。日期和时间将由用户输入提供。如何将日期和时间值传递到本机日历? 我尝试了很多,Calendar.getInstance()将有助于设置当前日期和时间。 但是我想为用户提供的日期和时间设置事件。在这方面有人能帮我吗? 我想要特定的代码。试试这个如何在android中动态地将事件设置为本机日历?,android,Android,我需要将事件设置为本机日历。日期和时间将由用户输入提供。如何将日期和时间值传递到本机日历? 我尝试了很多,Calendar.getInstance()将有助于设置当前日期和时间。 但是我想为用户提供的日期和时间设置事件。在这方面有人能帮我吗? 我想要特定的代码。试试这个 Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType("vnd.android.cursor.item/event"); intent.putExtra("
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);
开始时间和结束时间是时间值package com.example.calendar\u four\u one;
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());
导入java.sql.Date;
导入java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Calendar;
导入java.util.List;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.provider.CalendarContract;
导入android.provider.CalendarContract.Events;
导入android.util.Log;
导入android.view.Menu;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
点击按钮;
编辑文本日期、时间;
整数年、月、日、时、分、秒;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
日期=(EditText)findViewById(R.id.editTextDate);
时间=(EditText)findViewById(R.id.editTextTime);
单击=(按钮)findViewById(R.id.button1);
单击.setOnClickListener(新建OnClickListener()){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
字符串d=date.getText().toString();
字符串t=time.getText().toString();
List dateTime=new ArrayList();
dateTime=getDateAndTime(d,t);
//String str[]=新字符串[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));
秒=整数.parseInt(dateTime.get(5));
Toast.makeText(getApplicationContext(),“”+年,Toast.LENGTH_LONG).show();
//SimpleDataFormat格式化程序=新的SimpleDataFormat(“MM/dd/yyyy hh:MM:ss”);
Intent calIntent=新的意图(Intent.ACTION\u INSERT);
setData(Events.CONTENT\u URI);
calIntent.putExtra(Events.TITLE,“Google IO Afterparty”);
calIntent.putExtra(Events.EVENT_地点,“第三街W酒店酒吧”);
calIntent.putExtra(Events.DESCRIPTION,“在谷歌IO之后出去喝一杯,和极客聊天。”);
Calendar startTime=Calendar.getInstance();
开始时间设置(年、月、日、时、分、秒);/(2013年)(星期三(即:道指第三日))15:50
Calendar endTime=Calendar.getInstance();
设置(年、月-1、天、小时、分钟+30、秒);//18:30
calIntent.putExtra(日历、合同、额外事件、开始时间、,
startTime.getTimeInMillis());
calIntent.putExtra(日历、合同、额外事件、结束时间、,
endTime.getTimeInMillis());
星触觉(calIntent);
Toast.makeText(getApplicationContext(),“”,Toast.LENGTH_LONG.show();
}
});
}
公共列表getDateAndTime(字符串日期、字符串时间)
{
列表=新的ArrayList();
字符串[]dateStr=date.split(“/”);
字符串[]timeStr=time.split(“:”);
for(字符串str:dateStr)
添加(str);
for(字符串str:timeStr)
添加(str);
退货清单;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.activity\u主菜单);
返回true;
}
}
包com.example.calendar\u four\u one;
导入android.app.NotificationManager;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.media.Ringtone;
导入android.media.ringtonemager;
导入android.net.Uri;
导入android.os.可控震源;
导入android.support.v4.app.NotificationCompat;
导入android.view.Gravity;
导入android.widget.Toast;
公共类提醒接收器扩展广播接收器{
//可控震源对象
公共振动器;
长[]模式={0L,250L,200L,250L,200L,250L,200L,250L,200L,
250L,200L,250L,200L,250L,200L};
//铃声对象
乌里·林特;
铃声铃声;
@凌驾
公共void onReceive(上下文、意图){
String rementtext=intent.getStringExtra(“文本”);
//每个警报的唯一通知id
int receiverID=intent.getIntExtra(“AlrmId”,0);
//通知创建
NotificationCompat.Builder mBuilder=新建NotificationCompat.Builder(
上下文)。设置小图标(android.R.drawable.ic\u弹出提示)
.setContentTitle(“提醒”).setContentText(提醒文本);
//创建可控震源模式
可控震源=(可控震源)上下文
.getSystemService(Context.u服务);
震动器。震动(模式,-1);//无重复
//通知音的创建和播放
ringT=铃声管理器
.getDefaultUri(RingtoneManager.TYPE_通知);
ringTone=RingtoneManager.getRingtone(上下文,ringT);
铃声。播放();
//制作烤面包片并在屏幕中央显示
Toast Toast=Toast.makeText(上下文、提醒文本、Toast.LENGTH\u LONG);
toast.setGravity(Gravity.CENTER,0,0);
toast.show();
//干杯结束。。。
//显示状态栏通知
NotificationManager mNotificationManager=(NotificationManager)上下文
.getSystemService(上下文通知服务);
mNotificationManager.notify(receiverID,mBuilder.build());
}
}
这段代码终于对我起作用了。什么是开始时间和结束时间