2012-09-24 26 views
8

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 APISYNCADAPTER. 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); 
+0

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. –

+0

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. –

Trả lời

2

Có bạn có thể làm điều đó. Nhưng vì bạn muốn tạo lịch được liên kết với tài khoản google của mình, bạn cần API Lịch Google cho điều này (không tìm thấy một giải pháp duy nhất để thực hiện việc này với Nhà cung cấp Lịch Android). Kiểm tra bên dưới liên kết:

Hãy chắc chắn để kiểm tra thám hiểm API của họ. Đơn giản HTTP YÊU CẦU cho việc tạo lịch mới:

POST https://www.googleapis.com/calendar/v3/calendars?key={YOUR_API_KEY}

{ 
"summary": "My new google calendar" 
} 

Và nó ỨNG PHÓ:

{ 
"kind": "calendar#calendar", 
"etag": "__________etag_val_________", 
"id": "[email protected]", 
"summary": "My new google calendar" 
} 

Sau đó bạn sẽ có thể quản lý lịch này từ ứng dụng Android của bạn với Nhà cung cấp lịch (sau khi đồng bộ hóa).

+0

Bạn có thể xây dựng được không? 'YOUR_API_KEY' trong mã của bạn là gì? – yshahak

+0

Để xác thực Android API chỉ tiến hành với [OAuth 2.0] (https://developers.google.com/google-apps/calendar/auth). Dù sao [liên kết] thứ nhất (https://developers.google.com/google-apps/calendar/quickstart/android) vẫn hợp lệ và có thể cung cấp cho bạn một khởi đầu nhanh chóng với Android và API Lịch Google. Nói về việc chèn lịch mới với kiểm tra API của họ [this] (https://developers.google.com/google-apps/calendar/v3/reference/calendars/insert) – Luke

Các vấn đề liên quan