首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过聊天(XMPP) Android发送日历事件

通过聊天(XMPP) Android发送日历事件
EN

Stack Overflow用户
提问于 2014-04-26 06:46:15
回答 6查看 1.6K关注 0票数 3

我只是想跟上Android的步伐,我想把日历事件发送给手机上的其他人。和whatsapp发送联系人一样。为了在chat (XMPP)中发送联系人,我使用了vCard。因此,在聊天中发送日历事件,我应该使用什么?

我找了很多东西。但却找不到有成果的东西。

请建议在XMPP中发送日历事件的库或代码片段。

提前谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-05-01 06:51:27

您可以参考iCal进出口,允许您在不使用iCalender同步服务的情况下将iCalender文件导入到日历中。

使用它,您可以将所有日历事件导入到iCalendar文件中,还可以将这些事件导出回日历。使用日历提供者,您可以获取所有日历数据,但需要android级别14级或更高级别的,而使用iCal进出口时,您也可以获取低API级别的所有日历数据。

票数 1
EN

Stack Overflow用户

发布于 2014-05-01 11:56:26

清单

代码语言:javascript
复制
<uses-permission android:name="android.permission.READ_CALENDAR" />

代码:

代码语言:javascript
复制
Cursor cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id",  "displayname" }, null, null, null);
cursor.moveToFirst();
String[] CalNames = new String[cursor.getCount()];
int[] CalIds = new int[cursor.getCount()];
for (int i = 0; i < CalNames.length; i++) {
    CalIds[i] = cursor.getInt(0);
    CalNames[i] = cursor.getString(1);
    cursor.moveToNext();
}
cursor.close();

获取所有事件,而特定事件则通过指定范围来完成。

代码语言:javascript
复制
ContentResolver contentResolver = getContentResolver();

Uri.Builder builder = Uri.parse(getCalendarUriBase() + "/instances/when").buildUpon();
        long now = new Date().getTime();
        ContentUris.appendId(builder, now - DateUtils.MILLIS_PER_DAY*10000);
        ContentUris.appendId(builder, now + DateUtils.MILLIS_PER_DAY * 10000);

然后假设您希望用ID =1记录日历中的事件ID

代码语言:javascript
复制
Cursor eventCursor = contentResolver.query(builder.build(),
                new String[] { "event_id"}, "Calendars._id=" + 1,
                null, "startDay ASC, startMinute ASC"); 
        // For a full list of available columns see http://tinyurl.com/yfbg76w
        while (eventCursor.moveToNext()) {
            String uid2 = eventCursor.getString(0);
            Log.v("eventID : ", uid2);

        }

现在,在Listview中显示此事件,选择其中一个作为文本消息发送,并在接收端:

代码语言:javascript
复制
Calendar cal = Calendar.getInstance();              
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("allDay", true);
intent.putExtra("rrule", "FREQ=YEARLY");
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", HERE MSG WHICH YOU RECEIVE);
startActivity(intent);
票数 1
EN

Stack Overflow用户

发布于 2014-04-28 10:08:36

没有AFAIK库,这实际上只是检索日历事件并将其数据转换为XML的问题。不幸的是,也没有关于日历事件应该如何用XMPP/XML表示的XEP,所以您必须想出自己的表示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23307651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档