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
像Activity和Service組件一樣,ContentProvider子類必須在它的應用程式的資訊清單檔中使用<provider>元素來定義。Android系統要從這個元素中擷取以下資訊:1. 授權(android:authorities)在系統中標識整個提供器的符號名。2. 提供器類名(android:name)這個類實現了ContentProvider抽象類別。3.
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
綁定類型的服務是在客戶-服務介面中的服務端。綁定類型服務允許組件(如Activity)綁定服務、發送請求、接收響應、以及執行處理序間通訊(IPC)。一個典型的綁定類型的服務只跟它所服務的那個應用程式組件同時存在,並且不在後台無限期的運行。這份文檔向你展示了如何建立綁定類型的服務,包括怎樣跟其他應用程式組件綁定。但是,關於服務的基本資料你還是應該參照“Android
Time of Update: 2018-12-03
如果你只在應用程式的局部使用服務,並且不需要跨進程工作,那麼你能夠實現自己的Binder類,用它直接給你的用戶端提供訪問服務中公用方法的能力。注意:通常,用戶端和服務端只是在同一個應用和進程中工作,例如,對於一個要良好工作的播放音樂的應用程式,就需要把在後台工作的播放音樂的服務與應用自己的一個Activity綁定。以下是建立綁定類型服務的步驟:1. 在服務中,使用以下方法之一建立Binder執行個體: A. 包含用戶端能夠調用的公用方法;
Time of Update: 2018-12-03
內容提供器管理著對資料的核心資產庫的訪問。並且提供器是Android應用程式的一部分,它經常為了跟資料協同工作而提供自己的UI。但是內容提供器的主要目的是提供其他應用程式使用,它們使用提供器的用戶端對象訪問提供器。提供器和提供器用戶端一起給處理處理序間通訊的資料和安全資料訪問提供了一個一致的、標準的介面。這個主題主要介紹以下基礎內容:1. 內容提供器是如何工作的;2. 使用API從內容提供器中擷取資料;3. 使用API來插入、更新、刪除內容提供器中的資料;4. 與提供器協同工作的其他API功能。
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
一個提供器能夠指定一些許可權,其他應用程式要訪問這個提供器的資料時必須申請它的許可權。這些許可權確保使用者瞭解應用程式將試圖訪問什麼樣的資料。基於提供器的要求,其他應用程式為了訪問這個提供器要申請它們所需要的許可權。最後安裝應用程式時,使用者能夠看到申請的全校性。如果提供器應用程式沒有指定任何許可權,那麼其他應用程式不能訪問這個提供器的資料。但是,提供器的應用程式中的組件始終有完全的讀寫存取權限,而不管是否指定了許可權。跟前面的解釋一樣,為了從使用者字典中擷取資料,這個提供器要求申請androi
Time of Update: 2018-12-03
內容提供器能夠返回標準的MIME媒體類型,或定製的MIME類型字串,或者都能。MIME類型格式如下:type/subtype例如,已知的MIME類型text/html,它有text類型和html子類型,如果提供器返回這種類型的資源標識(URI),就意味著使用這個URI查詢,將返回
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