Time of Update: 2018-12-03
這一節使用使用者字典提供器作為一個例子來描述了怎樣從提供器中擷取資料。為了清晰起見,本節中的程式碼片段在UI線程上調用ContentResolver()方法,但是,在實際代碼中,應該在一個獨立的線程中執行非同步查詢。執行非同步查詢的方法之一是使用CursorLoader類,這個類在裝載器(Loader)指南中進行過比較詳細的描述。而且這裡的代碼也只是程式碼片段,它們不是一個完整應用程式的展示。按照以下基本步驟從提供器中擷取資料:1. 給提供器申請讀存取權限;2. 定義發送給提供器的查詢代碼。
Time of Update: 2018-12-03
合約類是包含了針對URIs、列名、MIME類型、以及屬於提供器的其他中繼資料的常量定義的靜態類。這個類在提供器和其他應用程式之間建立一個契約,從而即使在實際的URI、列名等發生了改變,也能確保提供能夠正確的被訪問。合約類對開發人員也是有協助的,因為對於它的常量都有助記的名字,因此針對列名或URIs開發人員很少會使用錯誤的值。因為它是一個類,所以它能包含Javadoc的文檔,整合式開發環境(如Eclipse)能夠自動完成來自合約類的常量命名並給對應常量顯示Javadoc。開發人員不能訪問來自你的應
Time of Update: 2018-12-03
在“安全和許可權”的專題中全面詳細的描述了有關Android系統的許可權和訪問。“資料存放區”的專題也描述了安全和許可權對各種儲存類型的影響。因此以下簡要介紹幾個重點內容:1. 預設情況下,儲存在裝置內部儲存空間上的資料檔案是你的應用程式和提供器私人的;2. 你建立的SQLiteDatabase資料庫對你的應用程式和提供器是私人的;3.
Time of Update: 2018-12-03
應用程式能夠使用Intent對象間接的訪問一個內容提供器。應用程式不調用任何的ContentResolver或ContentProvicer方法,相反,它會給啟動它的Activity發送一個Intent對象,這個Intent對象通常是提供自己應用程式的一部分。目標Activity負責獲在它的UI中擷取和顯示資料。依賴Intent中的動作,目標Activity也可以提示使用者來修改提供器的資料。Intent對象也可以包含目標Activity在UI中顯示的附加資料,然後使用者在使用它來修改提供器中的
Time of Update: 2018-12-03
ContentProvider類有兩個方法能夠返回MIME類型:getType()你必須給提供實現的必要的方法之一。getStreamTypes()如果你的提供器提供了檔案,那麼就期望實現這個方法。針對錶的MIME類型getType()方法返回了由內容資源標識(URI)參數返回的描述資料類型的MIME格式中的一個字串。這個URI是被模式化的而不是一個特定的URI;因此,你應該返回跟這個模式比對的與內容資源標識相關聯的資料類型。對於普通的如text、HTML、JPEG等資料類型,getType()
Time of Update: 2018-12-03
日曆提供器是針對使用者日曆事件的一個資產庫。日曆提供器API允許你執行有關日曆、、事件、會議、提醒等內容的查詢、插入、更新、刪除操作。日曆提供器API能夠用於應用程式和同步適配器,規則的變化依賴於什麼類型的程式製造了這個調用。本文重點關注應用程式怎樣使用日曆提供API。對於與同步適配器的不同的討論,請看同步適配器。通常,要讀或寫行事曆資料,應用程式的資訊清單檔中必須包含“使用者權限”一節中描述的適當的許可權,為了讓執行普通的的操作更加容易,日曆提供器提供了一組在“日曆Intent對象”一節中介
Time of Update: 2018-12-03
Calendars表CalendarContract.Calendars表包含了單個日曆的詳細資料。下表中Calendars表列對應用程式和同步適配器都是可寫的。對於這個表支援的完整的欄位列表,請看“CalendarContract.Calendars參考”http://developer.android.com/reference/android/provider/CalendarContract.Calendars.html常量描述NAME日曆的名字CALENDAR_DISPLAY_NAME
Time of Update: 2018-12-03
內容提供器是用結構化的格式來儲存資料的介面。在你建立介面之前,你必須決定如何儲存資料,你能夠使用你喜歡的任何格式儲存資料,然後設計讀寫資料所必須的介面。以下是在Android平台中有效資料存放區技術:1.
Time of Update: 2018-12-03
綁定類型的服務是在客戶-服務介面中的服務端。綁定類型服務允許組件(如Activity)綁定服務、發送請求、接收響應、以及執行處理序間通訊(IPC)。一個典型的綁定類型的服務只跟它所服務的那個應用程式組件同時存在,並且不在後台無限期的運行。這份文檔向你展示了如何建立綁定類型的服務,包括怎樣跟其他應用程式組件綁定。但是,關於服務的基本資料你還是應該參照“Android
Time of Update: 2018-12-03
以下是針對設計提供器的資料結構的一些提示:1. 表資料應該始終有一個“主鍵”列,提供器針對每一列維護一個唯一的數字值。你能使用這個值把本行於其他表中相關行串連到一起(作為外鍵來使用)。雖然這列可以使用任意的名稱,但是使用BaseColumns.ID是最好的選擇,因為它能夠把提供器的查詢結果跟ListView對象要求的名叫_ID的檢索列關聯到一起。2.
Time of Update: 2018-12-03
如果你只在應用程式的局部使用服務,並且不需要跨進程工作,那麼你能夠實現自己的Binder類,用它直接給你的用戶端提供訪問服務中公用方法的能力。注意:通常,用戶端和服務端只是在同一個應用和進程中工作,例如,對於一個要良好工作的播放音樂的應用程式,就需要把在後台工作的播放音樂的服務與應用自己的一個Activity綁定。以下是建立綁定類型服務的步驟:1. 在服務中,使用以下方法之一建立Binder執行個體: A. 包含用戶端能夠調用的公用方法;
Time of Update: 2018-12-03
建立具有綁定能力的服務時,必須提供一個IBinder對象,它用於給用戶端提供與服務端進行互動的編程介面。有三種方法能夠定義這個介面:1. 繼承Binder類如果你的服務是你的應用程式的私人服務,並且跟用戶端運行在同一個進程中,那麼就應該通過繼承Binder類來建立你的介面,並且佛從onBind()方法中返回這個介面的一個執行個體。用戶端接收這個Binder對象,並且能夠使用這個對象直接存取Binder類中實現的或Service中的公用方法。當你的服務只是在後台給你自己的應用程式工作時,這是首選技
Time of Update: 2018-12-03
合約類(Contract
Time of Update: 2018-12-03
應用程式使用ContentResolver用戶端對象訪問來自用戶端的資料。這個對象有一些與提供器中相同的命名的方法,提供器是ContentProvider的一個具體的子類的執行個體。ContentResolver對象的方法提供了基本的“CRUD”(建立、擷取、更新和刪除)持久化儲存的功能。在用戶端應用程式的進程中的ContentResolver對象和提供器自己應用中的ContentProvider對象自動的處理處理序間通訊。ContentProvider對象也以表的形式在資料資產庫和資料的外部表
Time of Update: 2018-12-03
用跟從提供器中擷取資料同樣的方式,你也可以使用提供器用戶端和提供器的ContentProvider對象之間的相互作用來修改資料。你調用一個帶有參數的ContentResolver對象的方法,這個參數會傳遞給相應的ContentProvider對象的方法。提供器和提供器用戶端自動處理安全和處理序間通訊。插入資料要把資料插入到提供器中,就要調用ContentResolver.insert()方法。這個方法把一個新行插入到提供器中,並且返回這行的內容的URI。以下程式碼片段顯示了怎樣把一行新的資料插入
Time of Update: 2018-12-03
內容URI是在提供器中標識資料統一資源標識。內容的統一資源標識包括完整的提供器的符號名和所指向的一個表名。當你調用一個用戶端方法來訪問提供器中的一個表時,這個表的內容的統一資源標識就應該是參數之一。在前面的程式碼中,常量CONTENT_URI包含了使用者字典的“words”表的統一資源標識。ContentResolver對象分析出URI的授權,並且使用這個授權跟已知的系統資料表的授權進行比較來找到內容的提供者,然後ContentResolver對象就能夠把查詢參數分發給正確的提供者。Conten
Time of Update: 2018-12-03
內容提供器管理著對資料核心資產庫的訪問。你可以連同資訊清單檔一起,把提供器做為一個Android應用程式中一個或多個類來實現。你要實現的類之一就ContentProvider子類,這個類是提供器跟其他應用程式之間的介面。儘管內容提供器意味著讓資料對其他的應用程式有效,但是在你的應用程式中也可以有允許使用者查詢、修改由提供器管理的資料的Activity。建立內容提供器之前的準備工作在開始建立提供器之前,先做以下工作:1.
Time of Update: 2018-12-03
內容提供器能夠提供很多不同的資料類型。使用者字典提供器僅提供了文本類型,但是提供器還能夠提供以下類型:1. Integer2. Long integer(long)3. floating point4. long floating
Time of Update: 2018-12-03
Intent對象解析Intent能夠被分成兩組:1. 用組件的名稱把Intent對象明確的指向目標組件(在Intent對象的組件名欄位指定目標組件名)。因為一般情況下其他應用的開發人員不會瞭解目標組件的名字,所以通常針對應用程式的內部訊息使用明確命名的Intent對象,如一個Activity啟動一個下屬服務或啟動一個姊妹Activity。2. 沒有命名目標(Intent對象的組件名欄位是空的)的隱式的Intent對象。隱式的Intent對象經常被用於啟用其他應用程式中的組件。Androi
Time of Update: 2018-12-03
狀態列表StateListDrawable一個被定義在XML中的可繪製對象,它依賴對象的狀態,使用不同的圖片來代表同一個圖形。如,一個Button能夠存在幾種不同狀態中的一種(如按下、聚焦或者都不是),通過使用狀態列表,能夠給每種狀態提供不同的背景圖片。能夠在一個XML檔案中描述狀態列表,每個圖形都用一個<item>元素來代表,它們被放在<selector>元素內。每個<item>使用各種屬性來描述圖形被繪製時要使用那個狀態。在狀態改變期間,狀態列表會從上到下