如何在android中动态地将事件设置为本机日历?

如何在android中动态地将事件设置为本机日历?,android,Android,我需要将事件设置为本机日历。日期和时间将由用户输入提供。如何将日期和时间值传递到本机日历? 我尝试了很多,Calendar.getInstance()将有助于设置当前日期和时间。 但是我想为用户提供的日期和时间设置事件。在这方面有人能帮我吗? 我想要特定的代码。试试这个 Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType("vnd.android.cursor.item/event"); intent.putExtra("

我需要将事件设置为本机日历。日期和时间将由用户输入提供。如何将日期和时间值传递到本机日历? 我尝试了很多,Calendar.getInstance()将有助于设置当前日期和时间。 但是我想为用户提供的日期和时间设置事件。在这方面有人能帮我吗? 我想要特定的代码。

试试这个

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());
} }


这段代码终于对我起作用了。

什么是开始时间和结束时间