LG 默认日历和 Google 日历之间的区别
Difference between LG default calendar and Google calendars
在我的 LG-G3 上有一个名为 "Phone" 的默认日历。这不是 Google 的。
我构建了一个将事件与用户的 Google 日历同步的应用程序,但是当我 select 所有带有查询的日历时 - 我也得到了 "Phone" 日历。由于它不是 Google 日历,我不能将它与 Google 日历功能(插入、删除等)一起使用。
我看不出 "Phone" calendar 和 Google canledars 除了它的名字有什么不同。有什么方法可以知道日历是否是 Google 的?
这是我的查询:
String[] l_projection = new String[] { Calendars._ID, Calendars.CALENDAR_DISPLAY_NAME, Calendars.CALENDAR_ACCESS_LEVEL, Calendars.ALLOWED_REMINDERS, Calendars.SYNC_EVENTS };
Uri l_calendars;
if (Build.VERSION.SDK_INT >= 8) {
l_calendars = Uri.parse("content://com.android.calendar/calendars");
} else {
l_calendars = Uri.parse("content://calendar/calendars");
}
try {
Cursor l_managedCursor = activity.getContentResolver().query(l_calendars, l_projection, null, null, null);
if (l_managedCursor.moveToFirst()) {
String l_methodAllow;
String l_accessPermission;
String l_calName;
String l_calId;
String l_syncEvents;
int l_cnt = 0;
int l_syncEventsCol = l_managedCursor.getColumnIndex(l_projection[4]);
int l_methodAllowCol = l_managedCursor.getColumnIndex(l_projection[3]);
int l_accessPermissionCol = l_managedCursor.getColumnIndex(l_projection[2]);
int l_nameCol = l_managedCursor.getColumnIndex(l_projection[1]);
int l_idCol = l_managedCursor.getColumnIndex(l_projection[0]);
do {
String access = l_managedCursor.getString(l_accessPermissionCol);
if (access.equals("500") || access.equals("600") || access.equals("700") || access.equals("800")) {
l_syncEvents = l_managedCursor.getString(l_syncEventsCol);
l_methodAllow = l_managedCursor.getString(l_methodAllowCol);
l_accessPermission = l_managedCursor.getString(l_accessPermissionCol);
l_calName = l_managedCursor.getString(l_nameCol);
l_calId = l_managedCursor.getString(l_idCol);
calNames.add(l_calName);
// ....
++l_cnt;
}
} while (l_managedCursor.moveToNext());
}
} catch (Exception e) {
// ...
}
Google日历可以通过查看日历ID的域名来识别。对于主日历,日历 ID 域名为@gmail.com。如果是副日历,日历ID域名为group.calendar.google.com
在我的 LG-G3 上有一个名为 "Phone" 的默认日历。这不是 Google 的。
我构建了一个将事件与用户的 Google 日历同步的应用程序,但是当我 select 所有带有查询的日历时 - 我也得到了 "Phone" 日历。由于它不是 Google 日历,我不能将它与 Google 日历功能(插入、删除等)一起使用。
我看不出 "Phone" calendar 和 Google canledars 除了它的名字有什么不同。有什么方法可以知道日历是否是 Google 的?
这是我的查询:
String[] l_projection = new String[] { Calendars._ID, Calendars.CALENDAR_DISPLAY_NAME, Calendars.CALENDAR_ACCESS_LEVEL, Calendars.ALLOWED_REMINDERS, Calendars.SYNC_EVENTS };
Uri l_calendars;
if (Build.VERSION.SDK_INT >= 8) {
l_calendars = Uri.parse("content://com.android.calendar/calendars");
} else {
l_calendars = Uri.parse("content://calendar/calendars");
}
try {
Cursor l_managedCursor = activity.getContentResolver().query(l_calendars, l_projection, null, null, null);
if (l_managedCursor.moveToFirst()) {
String l_methodAllow;
String l_accessPermission;
String l_calName;
String l_calId;
String l_syncEvents;
int l_cnt = 0;
int l_syncEventsCol = l_managedCursor.getColumnIndex(l_projection[4]);
int l_methodAllowCol = l_managedCursor.getColumnIndex(l_projection[3]);
int l_accessPermissionCol = l_managedCursor.getColumnIndex(l_projection[2]);
int l_nameCol = l_managedCursor.getColumnIndex(l_projection[1]);
int l_idCol = l_managedCursor.getColumnIndex(l_projection[0]);
do {
String access = l_managedCursor.getString(l_accessPermissionCol);
if (access.equals("500") || access.equals("600") || access.equals("700") || access.equals("800")) {
l_syncEvents = l_managedCursor.getString(l_syncEventsCol);
l_methodAllow = l_managedCursor.getString(l_methodAllowCol);
l_accessPermission = l_managedCursor.getString(l_accessPermissionCol);
l_calName = l_managedCursor.getString(l_nameCol);
l_calId = l_managedCursor.getString(l_idCol);
calNames.add(l_calName);
// ....
++l_cnt;
}
} while (l_managedCursor.moveToNext());
}
} catch (Exception e) {
// ...
}
Google日历可以通过查看日历ID的域名来识别。对于主日历,日历 ID 域名为@gmail.com。如果是副日历,日历ID域名为group.calendar.google.com