从 WebView 添加日历事件

问题描述 投票:0回答:2

我正在遵循本教程,以便可以从

WebView
添加日历事件。我知道该方法使用
shouldOverrideUrlLoading
表示 url
date:

public boolean shouldOverrideUrlLoading (WebView view, String url) {

if (url.startsWith("date:")) {

Log.d(this.getClass().getCanonicalName(),url);

Calendar beginCal = Calendar.getInstance();

Calendar endCal = Calendar.getInstance();

Date beginDate = new Date(0, 0, 0);

Date endDate = new Date(0, 0, 0);

String parsed = url.substring(5);

String[] components = parsed.split(",");

beginDate.setMonth(Integer.parseInt(components[0]));

beginDate.setDate(Integer.parseInt(components[1]));

beginDate.setYear(Integer.parseInt(components[2]));

beginCal.setTime(beginDate);

endDate.setMonth(Integer.parseInt(components[3]));

endDate.setDate(Integer.parseInt(components[4]));

endDate.setYear(Integer.parseInt(components[5]));

endCal.setTime(endDate);

calendarevent(beginCal, endCal, components[6]);

return true;

}

return false;

}

});

但是,我无法理解我应该输入的

date:
url 的格式:

<a href='date:beginmonth, beginday, beginyear, 
endmonth, endday, endyear, My Event Description'>
My event link</a>

例如我2016年9月15日有一个活动,所以我把url变成:

<a href='date:09,15,2016,09,15,2016, My Event Description'>
    My event link</a>

我弄错了日期。日期变成了 2011 年 5 月 11 日。我犯了什么错误?

android webview calendar
2个回答
1
投票

我自己解决了这个问题。该错误的发生可能是由于根据

文档
使用了已弃用的Date。更改为
Calendar.set
现在可以使用了。

Calendar beginCal = Calendar.getInstance();
Calendar endCal = Calendar.getInstance();

String parsed = url.substring(5);
String[] components = parsed.split(",");
int month = Integer.parseInt(components[0])-1;
int day = Integer.parseInt(components[1]);
int year = Integer.parseInt(components[2]);
beginCal.set(year, month, day);

int monthend = Integer.parseInt(components[3])-1;
int dayend = Integer.parseInt(components[4]);
int yearend = Integer.parseInt(components[5]);

endCal.set(yearend, monthend, dayend);
calendarevent(beginCal, endCal, components[6]);

0
投票
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 0, 19, 7, 30);
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 0, 19, 8, 30);
Intent intent = new Intent(Intent.ACTION_INSERT)
        .setData(Events.CONTENT_URI)
        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
        .putExtra(Events.TITLE, "Yoga")
        .putExtra(Events.DESCRIPTION, "Group class")
        .putExtra(Events.EVENT_LOCATION, "The gym")
        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
        .putExtra(Intent.EXTRA_EMAIL, "[email protected],[email protected]");
startActivity(intent);

这是官方教程:

https://developer.android.com/guide/topics/providers/calendar-provider?hl=id#intent-insert

有效!

© www.soinside.com 2019 - 2024. All rights reserved.