Tôi đã kiểm tra tất cả các cách để tạo lịch mới từ trong ứng dụng Android. Cách duy nhất tôi đã nhìn thấy là sử dụng API lịch mới trong phiên bản api mới nhất, NHƯNG điều này chỉ có vẻ hoạt động nếu bạn sử dụng CalendarContract.ACCOUNT_TYPE_LOCAL
. Nó sẽ không cho phép bạn tạo Lịch được đính kèm với tài khoản Google của người dùng, được đồng bộ hóa với Google Calendar
. Nó không xuất hiện trong danh sách lịch trực tuyến tại Google Calendar.Android Thêm Lịch mới
values.put(CalendarContract.Calendars.ACCOUNT_TYPE,
CalendarContract.ACCOUNT_TYPE_LOCAL);
Tôi đã thử sử dụng loại tài khoản từ Tài khoản nhưng điều này không hiệu quả. Nó dường như không tạo ra bất kỳ lỗi nào. Kết quả trở lại tốt.
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
Đây là mã đầy đủ cho thêm lịch địa phương mới sử dụng (loại tài khoản nhận xét ra) Calendar API
và SYNCADAPTER
. Có ai biết nếu những gì tôi đang cố gắng làm thậm chí có thể?
AccountManager manager = AccountManager.get(context);
Account[] accounts = manager.getAccountsByType("com.google");
String accountName = "";
String accountType = "";
for (Account account : accounts) {
accountName = account.name;
accountType = account.type;
break;
}
ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Calendars.ACCOUNT_NAME, accountName);
//values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
values.put(CalendarContract.Calendars.NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
values.put(CalendarContract.Calendars.VISIBLE, 1);
values.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
values.put(CalendarContract.Calendars.OWNER_ACCOUNT, accountName);
values.put(CalendarContract.Calendars.DIRTY, 1);
values.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, TimeZone.getDefault().getID());
Uri calUri = CalendarContract.Calendars.CONTENT_URI;
calUri = calUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, accountName)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType)
.build();
Uri result = cr.insert(calUri, values);
Vui lòng trả lời câu hỏi của riêng bạn, nếu sự cố của bạn được giải quyết. Bạn sẽ nhận được huy hiệu và nhiều người sẽ nhận được trợ giúp miễn phí/dễ dàng. –
Bạn có giải pháp nào cho câu hỏi của mình không? Tôi đang tìm kiếm như vậy. BTW câu hỏi hay. –