我和这个日历的东西一直在争吵。我想创建一个不与任何帐户同步的LOCAL日历。
我使用以下代码创建了一个本地日历:
public static long createLocalCalendar()
{
ContentValues values = new ContentValues();
values.put(
Calendars.ACCOUNT_NAME,
"nav_shift_manager"); //Account name becomes equal to "nav_shift_manager" !!TEST!!
values.put(
Calendars.ACCOUNT_TYPE,
CalendarContract.ACCOUNT_TYPE_LOCAL);
values.put(
Calendars.NAME,
"NAV Shift Manager Calendar");
values.put(
Calendars.CALENDAR_DISPLAY_NAME,
"NAV Shift Manager Calendar");
values.put(
Calendars.CALENDAR_COLOR,
0xffff0000);
values.put(
Calendars.CALENDAR_ACCESS_LEVEL,
Calendars.CAL_ACCESS_OWNER);
values.put(
Calendars.OWNER_ACCOUNT,
"some.account@googlemail.com");
values.put(
Calendars.CALENDAR_TIME_ZONE,
"Europe/London");
Uri.Builder builder =
CalendarContract.Calendars.CONTENT_URI.buildUpon();
builder.appendQueryParameter(
Calendars.ACCOUNT_NAME,
"com.navshiftmanager");
builder.appendQueryParameter(
Calendars.ACCOUNT_TYPE,
CalendarContract.ACCOUNT_TYPE_LOCAL);
builder.appendQueryParameter(
CalendarContract.CALLER_IS_SYNCADAPTER,
"true");
Uri uri = TrocasNAVApp.getContext().getContentResolver().insert(builder.build(), values);
// Now get the CalendarID :
return Long.parseLong(uri.getLastPathSegment());
}
我在索尼XPERIA J上运行了这个应用程序,它运行完美!不过我已经在三星Galaxy S3上尝试了它,它根本不起作用。
首先,每个创建的事件,设备都会自动将事件设置为“脏”和“删除”。我根本得不到它。看起来他期待与某种东西进行某种同步,但我已经明确地写了我想要一个ACCOUNT_TYPE_LOCAL。我真的不明白为什么不同手机中的相同代码的工作方式不同。在我的XPERIA J上,添加的事件完美无缺,如果我删除它们,它们就会永远消失。
在我的Samsung S3上,所有事件都自动设置为“已删除”和“脏”,我点击删除它们并且它们永远不会被删除,因为它们似乎期待某种同步。这意味着无法使用检查“已删除”的技巧,因为它们始终设置为“已删除”。
Android日历的行为不应该是通用的吗?