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

时间:2014-04-26 06:46:16

标签: android calendar xmpp chat

我刚刚开始使用Android,我希望通过手机向他人发送日历活动。与发送联系人的whatsapp相同。要在聊天中发送联系人( XMPP ),我使用了vCard。那么在聊天中发送日历事件应该使用什么?

我搜索了很多。但是找不到富有成效的东西。

请修改用于在XMPP中发送日历活动的库或代码段。

提前致谢。

6 个答案:

答案 0 :(得分:1)

您可以参考iCal Import Export,无需使用Google同步服务即可将iCalender个文件导入日历。

使用此功能,您可以将所有日历事件导入iCalendar个文件,并将这些事件导出回日历。使用Calendar Provider您可以获取所有日历数据,但在使用iCal Import Export时需要Android API等级14 或更高版本,您可以获取较低API级别的所有日历数据也是。

答案 1 :(得分:1)

清单

<uses-permission android:name="android.permission.READ_CALENDAR" />

代码:

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

通过指定范围

获取所有事件和特定事件
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

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中显示此事件,选择其中一个作为文本消息和接收方发送:

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

答案 2 :(得分:0)

没有库AFAIK,它只是检索日历事件并将其数据转换为XML的问题。不幸的是,还没有关于如何在XMPP / XML中表示日历事件的XEP,所以你必须提出自己的表示。

答案 3 :(得分:0)

iCalendar/vCalendar是类似于vCard的日历文件格式

答案 4 :(得分:0)

您可以在vcard中添加保存日历信息示例的新字段

VCard vCard = new VCard();
vCard.setField("calender","calender info");

日历信息应该是一个刺痛,它可以是一个json格式的字符串。

收到它的用户可以加载您的vcard并使用方法

vCard.load(connection, Jid);
String string=vCard.getField("calender");

答案 5 :(得分:-3)

为此,你真的不需要任何特定的图书馆。 你可以查看Calendar Provider 他们也有一个很棒的例子!

请务必在manifest.xml中使用这些权限

<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />

如果您希望发送联系人,请查看Android: How to import contact from phone?

如果有帮助,请投票!我真的需要它。 :)