成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android日程表應用整合開發實例

原創
移動開發 Android
日程表是智能手機的一個重要功能,然而目前還沒有任何文檔來描述在Android上整合日程表應用。本文通過對谷歌日程表應用進行程序的逆向工程,提供了整合Android日程表應用的功能。

【51CTO精選譯文】Android手機一般都內置一個日程表(Calendar)應用。第三方應用程序可以利用日程表內容提供程序的接口,實現閱讀用戶日程安排信息和在日程表中安排新事件。這個日程表應用可以直接與用戶的谷歌日程表應用實現內容同步。

不幸的是,并沒有任何文檔來描述在Android上整合日程表應用,或者類似聯系人應用的其它應用。本文中的所有信息均來自于對谷歌日程表應用內容提供程序的逆向工程。這個接口經常發生變化,而且支持的功能有限。但是,對某些類型的應用程序來說,整合日程表應用可能是一個非常強大的功能。

本文中的代碼已經在Android 2.0 SDK以前的版本上進行過測試。由于目前市場上沒有Android 2.0手機,我們還不能確保它可以運行在哪些即將發布的設備上。我們在T-Mobile G1(SDK 1.6)上測試運行了這些代碼。

訪問日程表數據

為了向你的Android應用添加日程表支持,你必須增加以下代碼到你應用程序的AndroidManifest.xml文件中:

  1. <uses-permission 
  2.   android:name="android.permission.READ_CALENDAR"> 
  3.   </uses-permission> 
  4. <uses-permission 
  5.    android:name="android.permission.WRITE_CALENDAR"> 
  6.    </uses-permission> 

登記這些許可后,你可以訪問用戶的日程表數據,而無需處理任何谷歌登錄問題。由于日程表應用沒有被安裝在Android模擬器中,因此所有測試和開發工作必須在安裝了日程表應用的真機上進行,使用模擬器無法啟動相應的提供程序。日程表應用和內容提供程序被包含在支持谷歌服務的Android手機中,諸如T-Mobile G1。

檢索用戶日程表事件列表

每個用戶可能在日程表應用中具有眾多指定的日程安排。舉例來說,一個用戶可能同時擁有工作日程安排、個人日程安排和節日日程安排。

通過使用內容提供程序接口,可實現訪問用戶配置的日程安排。為了取回用戶日程安排的事件列表,我們需要為日程表內容提供程序編寫一個合適的Uri查詢,如下所示:

  1. String[] projection = new String[] { "_id""name" };  
  2. Uri calendars = Uri.parse("content://calendar/calendars");  
  3.        
  4. Cursor managedCursor =  
  5.   managedQuery(calendars, projection, nullnullnull); 

現在,這個查詢將返回所有日程安排,其中包括那些未處于激活狀態的安排。為了只獲得活躍日程安排的列表,我們需要限制我們的查詢只返回“selected”字段值為真的記錄:

  1. String[] projection = new String[] { "_id""name" };  
  2. Uri calendars = Uri.parse("content://calendar/calendars");  
  3.        
  4. Cursor managedCursor =  
  5.    managedQuery(calendars, projection,  
  6.    "selected=1"nullnull);  
  7.  

現在我們得到了一個日程表的列表。我們可以通過下面的代碼排列查詢結果:

  1. if (managedCursor.moveToFirst()) {  
  2.  String calName;   
  3.  String calId;   
  4.  int nameColumn = managedCursor.getColumnIndex("name");   
  5.  int idColumn = managedCursor.getColumnIndex("_id");  
  6.  do {  
  7.     calName = managedCursor.getString(nameColumn);  
  8.     calId = managedCursor.getString(idColumn);  
  9.  } while (managedCursor.moveToNext());  

一旦我們知道了希望訪問哪一個日程安排后,我們可以增加一個日程表事件。日程表事件有許多重要的字段,其中包括事件題目、時間和位置等信息,以及該事件條目在日程表中的顯示方式等。日程表事件可以是一次性或重復性發生的。

增加單次發生事件到日程表

要想增加條目到一個特定日程表,我們需要使用ContentValues配置一個日程表條目插入:

  1. ContentValues event = new ContentValues(); 

每一個事件需要被指定到一個特定日程表,因此你需要首先通過日程表標識來實現插入這條事件:

  1. event.put("calendar_id", calId); 

然后我們再設置該事件的基本信息,包括諸如事件題目、描述和位置等字符段。

  1. event.put("title""Event Title");  
  2. event.put("description""Event Desc");  
  3. event.put("eventLocation""Event Location"); 

另外還有許多不同的選項來配置事件的時間和日期。我們可以使用以下代碼設定事件的起始時間信息:

  1. long startTime = START_TIME_MS;  
  2. long endTime = END_TIME_MS;  
  3. event.put("dtstart", startTime);  
  4. event.put("dtend", endTime); 

如果我們需要添加一個生日或節假日,我們可以設置該條目為全天事件:

  1. event.put("allDay"1);   

對多數條目來說,這些信息已經足夠。不過,還有許多其它有用的日程表條目屬性。舉例來說,你可以設置時間狀態為暫時性(值為0)、習慣性(值為1)或取消(值為2):

  1. event.put("eventStatus"1); 

你還可以控制誰可以查看它,設定其可見性為默認(值為0)、機密(值為1)、私有(值為2)或公開(值為3):

  1. event.put("visibility"0); 

你可以控制該事件是否觸發告警:

  1. event.put("hasAlarm"1);  

一旦日程表事件被正確配置后,我們就可以使用ContentResolver來插入這條新日程表安排到具有合適Uri的日程表事件中:

  1. Uri eventsUri = Uri.parse("content://calendar/events");  
  2. Uri url = getContentResolver().insert(eventsUri, event); 

#T#insert()方法的調用可以建立與程表內容提供程序的聯系,并嘗試插入該條目到相應的用戶日程表中。如果你找到日程表應用并啟動它,你會看到你的日程表條目已經在相應日程表中。如果你使用谷歌在線日程表服務,由于日程表應用具有自動同步功能,你也會看到該條目已經出現于在線服務中。

增加一個重復發生事件到日程表

你還可以配置重發性日程表事件。你只需要按照重發性規則的形式為該事件增加幾個字段即可。該規則的詳細說明基于RFC2445。

Android應用能夠與許多Android手機用戶的日程表應用緊密配合。日程表功能需要通過內容提供程序接口來訪問,這讓第三方應用程序可以閱讀日程表信息和增加新日程安排。

原文:Working with the Android Calendar  作者:Shane Conder

責任編輯:yangsai 來源: 51CTO.com
相關推薦

2011-03-17 13:09:45

Ubuntu 11.1

2013-05-03 09:27:36

Ubuntu 13.1

2020-11-20 10:52:54

Antd表格日程

2009-09-29 13:32:40

Ubuntu 9.10Linux操作系統發布日程表

2009-03-05 08:30:57

LinuxUbuntu日程表

2013-09-09 15:38:13

Fedora 20Fedora操作系統

2009-04-02 15:58:12

AndroidEclipseSqlite

2011-09-08 13:11:07

Android Wid實例

2021-03-21 20:23:07

樹莓派Linux

2009-03-23 07:36:43

Ubuntu 9.10win7正式版

2011-06-02 09:58:09

CentOS 6.0

2017-03-16 14:01:00

2010-04-07 11:44:40

Ubuntu 10.1

2011-08-08 16:56:44

iPhone 字符處理 視圖

2015-10-29 11:36:45

Google技術經理程序員

2009-12-21 17:53:45

Fedora Core

2013-05-20 17:51:47

Android游戲開發SurfaceView

2011-07-26 11:08:23

iOS 錄像 錄音

2009-12-15 14:05:42

Fedora Core

2013-05-23 15:06:22

Android開發體重計算器移動應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区视频在线观看 | 国产精品免费av | 99九九视频| 琪琪午夜伦伦电影福利片 | 91成人免费 | 久久9热 | 国产精品日韩在线观看一区二区 | 中文字幕一区在线观看视频 | 亚洲午夜av| 久久精品国产一区老色匹 | 亚洲免费视频一区 | 黑人巨大精品欧美一区二区免费 | 国产精品精品视频一区二区三区 | 欧美成视频 | 日韩精品视频在线观看一区二区三区 | 一级特黄a大片 | 久久婷婷av| 网站黄色在线免费观看 | 亚洲一区二区三区免费观看 | 欧美日韩国产在线观看 | 国产99久久精品 | 天天色天天射天天干 | 亚洲国产成人一区二区 | 久久国产精品视频 | 91免费在线 | 午夜影院网站 | 久久久久久国产精品 | 91超碰在线 | 精品国产乱码久久久久久丨区2区 | 一区二区三区视频在线免费观看 | 欧美日韩视频一区二区 | 国产日韩欧美二区 | 亚洲成色777777在线观看影院 | 一级片aaa | 欧美日韩a | 一区二区三区在线免费看 | 99爱免费 | 一区二区三区四区免费视频 | 激情五月综合 | 欧美a在线| 性色综合 |