打开带有 html 链接的 android 日历 [英] open android calendar with html link
问题描述
我需要在我的 Android 设备上打开日历应用使用一个简单的 html 链接.我可以在 iOS 中使用 href=CALSHOW://安卓有类似的吗?
I need to open the calendar app on my Android Device using a simple html link. I was able to do this in iOS with href=CALSHOW:// is there something similar for android?
是否有任何解决方法?
提前致谢.
推荐答案
在 Android 上,有一个比 ios urls schemas 更强大的方法.Intents 而且真的真的更强大!
On Android there are a method more powerful than the ios urls schemas. Intents And it is really really more powerful!
您可以使用 Intents 打开日历或添加日历事件(以及许多其他用途,例如打开 twitter、在 whatsapp 上分享图像、在 evernote 上创建笔记......)
You can open the calendar or add a calendar event with the Intents (and a lot of other uses like open twitter, share an image on whatsapp, create a note on evernote ... )
在此链接中,您可以找到解决方案.请注意android <4.0,因为日历的api在Android 4.0上发生了变化和标准化.也阅读这篇文章
In this link you can find the solution. Take care with android <4.0 because the api of calendar changes and standardizes on Android 4.0. Read this this post too
要添加日历事件,请遵循以下代码:(这是一个示例,可能您没有使用所有这些,或者您的日期格式可能不同)
To add a calendar event you follow the next code: (this is an example, maybe you not use all of this or perhaps your date format is different)
/**
* Creates a calendar event
*
* @param ce calendar event information
* @return
*/
protected static boolean createCalendarEvent(Context context, CalendarEventCustomObject ce) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
return createCalendarEventIceCream(context, ce);
else
return createCalendarEventNormal(context, ce);
}
@SuppressLint("SimpleDateFormat")
protected static boolean createCalendarEventNormal(Context context, CalendarEventCustomObject ce) {
try {
Intent calIntent = new Intent(Intent.ACTION_EDIT);
calIntent.setType("vnd.android.cursor.item/event");
calIntent.putExtra("title", ce.description);
calIntent.putExtra("eventLocation", ce.location);
calIntent.putExtra("description", ce.summary);
calIntent.putExtra("calendar_id", ce.id);
// Add date info
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ");
Long start = Utils.parseDate(ce.start, df);
if (start == null) {
start = Utils.parseDate(ce.start, df2);
if (start == null)
start = System.currentTimeMillis();
}
Long end = Utils.parseDate(ce.end, df);
if (end == null) {
end = Utils.parseDate(ce.end, df2);
if (end == null)
end = System.currentTimeMillis();
}
calIntent.putExtra("beginTime", start);
calIntent.putExtra("endTime", end);
context.startActivity(calIntent);
return true;
} catch (Exception e) {
return false;
}
}
@SuppressLint("NewApi")
protected static boolean createCalendarEventIceCream(Context context, CalendarEventCustomObject ce) {
try {
Intent calIntent = new Intent(Intent.ACTION_INSERT);
calIntent.setType("vnd.android.cursor.item/event");
// Create intent and add string info
calIntent.putExtra(Events.TITLE, ce.description);
calIntent.putExtra(Events.EVENT_LOCATION, ce.location);
calIntent.putExtra(Events.DESCRIPTION, ce.summary);
calIntent.putExtra(Events.CALENDAR_ID, ce.id);
// add date info
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ");
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Long start = Utils.parseDate(ce.start, df);
if (start == null) {
start = Utils.parseDate(ce.start, df2);
if (start == null)
start = System.currentTimeMillis();
}
Long end = Utils.parseDate(ce.end, df);
if (end == null) {
end = Utils.parseDate(ce.end, df2);
if (end == null)
end = System.currentTimeMillis();
}
calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, start);
calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);
calIntent.setData(CalendarContract.Events.CONTENT_URI);
((Activity) context).startActivity(calIntent);
return true;
} catch (Exception e) {
return false;
}
}
这篇关于打开带有 html 链接的 android 日历的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!