1. 程式人生 > >四大元件之ContentProvider

四大元件之ContentProvider

一、什麼是ContentProvider

ContentProvider(內容提供者)是Android中的四大元件之一。主要用於對外共享資料,也就是通過ContentProvider把應用中的資料共享給其他應用訪問,其他應用可以通過ContentProvider對指定應用中的資料進行操作。ContentProvider分為系統的和自定義的,系統的也就是例如聯絡人,圖片等資料。

二、ContentProvider如何使用呢?

1.ContentProvider
Android提供了一些主要資料型別的ContentProvider,比如音訊、視訊、圖片和私人通訊錄等。可在android.provider

包下面找到一些Android提供的ContentProvider。通過獲得這些ContentProvider可以查詢它們包含的資料,當然前提是已獲得適當的讀取許可權。
主要方法:
public boolean onCreate() 在建立ContentProvider時呼叫
public Cursor query(Uri, String[], String, String[], String) 用於查詢指定UriContentProvider,返回一個Cursor
public Uri insert(Uri, ContentValues) 用於新增資料到指定UriContentProvider

public int update(Uri, ContentValues, String, String[]) 用於更新指定UriContentProvider中的資料
public int delete(Uri, String, String[]) 用於從指定UriContentProvider中刪除資料
public String getType(Uri) 用於返回指定的Uri中的資料的MIME型別
*如果操作的資料屬於集合型別,那麼MIME型別字串應該以vnd.android.cursor.dir/開頭。
例如:要得到所有person記錄的Uricontent://contacts/person
,那麼返回的MIME型別字串為"vnd.android.cursor.dir/person"
*如果要操作的資料屬於非集合型別資料,那麼MIME型別字串應該以vnd.android.cursor.item/開頭。
例如:要得到id10person記錄的Uricontent://contacts/person/10,那麼返回的MIME型別字串應為"vnd.android.cursor.item/person"

2.ContentResolver
當外部應用需要對ContentProvider中的資料進行新增、刪除、修改和查詢操作時,可以使用ContentResolver類來完成,要獲取ContentResolver物件,可以使用Context提供的getContentResolver()方法。

ContentResolver提供的方法和ContentProvider提供的方法對應的有以下幾個方法。
public Uri insert(Uri uri, ContentValues values) 用於新增資料到指定UriContentProvider中。
public int delete(Uri uri, String selection, String[] selectionArgs) 用於從指定UriContentProvider中刪除資料。
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)用於更新指定UriContentProvider中的資料。
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)用於查詢指定UriContentProvider

3.Uri
Uri指定了將要操作的ContentProvider,其實可以把一個Uri看作是一個網址,我們把Uri分為三部分。
第一部分是"content://"。可以看作是網址中的"http://"
第二部分是主機名或authority,用於唯一標識這個ContentProvider,外部應用需要根據這個標識來找到它。可以看作是網址中的主機名,比如"blog.csdn.net"
第三部分是路徑名,用來表示將要操作的資料。可以看作網址中細分的內容路徑。


4.UriMatcherContentUristContentResolver簡介
       因為Uri代表了要操作的資料,所以我們很經常需要解析Uri,並從Uri中獲取資料。Android系統提供了兩個用於操作Uri的工具類,分別為UriMatcherContentUris。掌握它們的使用,會便於我們的開發工作。
       UriMatcher:用於匹配Uri,它的用法如下:
       1.首先把你需要匹配Uri路徑全部給註冊上,如下:
       //常量UriMatcher.NO_MATCH表示不匹配任何路徑的返回碼(-1)
       UriMatcher  uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);//如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider/contact路徑,返回匹配碼為1

//新增需要匹配uri,如果匹配就會返回匹配碼
       uriMatcher.addURI(com.changcheng.sqlite.provider.contactprovider,contact, 1);
//如果match()方法匹配   content://com.changcheng.sqlite.provider.contactprovider/contact/230路徑,返回匹配碼為2
       uriMatcher.addURI(com.changcheng.sqlite.provider.contactprovider,contact/#, 2);//#號為萬用字元
       2.註冊完需要匹配的Uri後,就可以使用uriMatcher.match(uri)方法對輸入的Uri進行匹配,如果匹配就返回匹配碼,匹配碼是呼叫addURI()方法傳入的第三個引數,假設匹配content://com.changcheng.sqlite.provider.contactprovider/contact路徑,返回的匹配碼為1

       ContentUris:用於獲取Uri路徑後面的ID部分,它有兩個比較實用的方法:
         withAppendedId(uri, id)用於為路徑加上ID部分
         parseId(uri)方法用於從路徑中獲取ID部分

       ContentResolver:當外部應用需要對ContentProvider中的資料進行新增、刪除、修改和查詢操作時,可以使用ContentResolver類來完成,要獲取ContentResolver物件,可以使用Activity提供的getContentResolver()方法。ContentResolver使用insertdeleteupdatequery方法,來操作資料。

5.在AndroidManifest.xml配置

<provider android:name=".PersonContentProvider" 
android:authorities="com.wp.providers.personprovider"/>





相關推薦

Android四大元件ContentProvider(二)

上節提到的四大元件之ContentProvider的簡單使用,在這篇文章中詳細的介紹其中的一些方法。 1.String getType(Uri uri)方法 首先看看官方對它的解釋: /** * Implement this to handle requests

Android四大元件ContentProvider(一)

1.什麼是ContentProvider? 內容提供程式管理對資料結構化資料集的訪問。它們封裝資料,並提供用於定義資料安全性的機制。內容提供者是連線一個程序中的資料與另一個程序中執行的程式碼的標準介面。 是不同應用程式之間進行資料交換的標準API,以某種Uri的形式對外提供資料,

Android四大元件ContentProvider

關於ContentProvider ContentProvider,被稱為內容提供者,通過Binder向其他元件以及其他應用提供資料。以某種Uri的形式對外提供資料,允許其他應用訪問或修改資料。其他應用程式使用ContentResolver根據Uri去訪問操作

Android四大元件ContentProvider詳解

1.適用場景 1) ContentProvider為儲存和讀取資料提供了統一的介面 2) 使用ContentProvider,應用程式可以實現資料共享 3) android內建的許多資料都是使用ContentProvider形式,供開發者呼叫的(如視訊,音訊,圖片,

Android 四大元件" ContentProvider "

前言 ContentProvider作為Android的四大元件之一,是屬於需要掌握的基礎知識,可能在我們的應用中,對於Activity和Service這兩個元件用的很常見,瞭解的也很多,但是對ContentProvider所知卻甚少,所以有必要去整理歸納下其中的內容,講講為什麼要用ContentProvid

四大元件ContentProvider

一、什麼是ContentProvider? ContentProvider(內容提供者)是Android中的四大元件之一。主要用於對外共享資料,也就是通過ContentProvider把應用中的資料共享給其他應用訪問,其他應用可以通過ContentProvider對指定應用

四大元件ContentProvider小結

總結提高,與君共勉 1、什麼是Content Provider 內容提供器( Content Provider)主要用於在不同的應用程式之間實現資料共享的功能,提供了一套完整的機制,允許一個程式訪問

Android四大元件ContentProvider內容提供器

public class MyProvider extends ContentProvider{ public static final int TABLE1_DIR = 0; public static final int TABLE1_ITEM = 1; public s

Android四大元件ContentProvider(內容提供者)

ContentProvider是什麼 ContentProvider是Android中的四大元件之一,主要用於不用應用之間共享資料,通過ContentProvider把應用中的資料共享給其他應用訪問,其他應用可以通過ContentProvider對指定應用中

小談Android四大元件ContentProvider

內容提供者的作用 1.應用程式建立的資料庫預設都是私有的,別的應用程式不可以訪問裡面的資料. 2.如果需要把自己應用程式私有的資料庫暴露給別的使用者增刪改查,就需要使用內容提供者. 3.作用: 一個應用程式訪問另外一個應用程式在硬碟上

Android四大元件ContentProvider-劉志遠-專題視訊課程

Android四大元件之ContentProvider—4971人已學習 課程介紹        本課程向大家講述Android中的四大元件之一ContentProvider(內容提供者)課程收益    學員學習之後,能夠吃透ContentProvier講師介紹    劉志遠

Android四大元件ContentProvider自定義

       ContentProvider 屬於Android應用程式的元件之一,作為應用程式之間唯一的共享資料的途徑,ContentProvider 主要的功能就是儲存並檢索資料以及向其他應用程式提供訪問資料的介面。        讓自己的資料和其他應用程式共享有兩種方

Android四大應用元件ContentProvider初探

理解 首先談一談為什麼要有ContentProvider? 當一個應用想要訪問另一個應用的資料庫時,由於每個應用的資料庫檔案時應用私有的,不能直接訪問,這時,被訪問的應用就需要一個對外的資料庫內容提供者,也就是ContentProvider。 <p

Android四大元件使用ContentProvider實現資料共享

ContendProvider是不同應用程式之間進行資料交換的標準API,ContentProvider以某種Uri的形式對外提供資料,允許其他應用訪問或修改資料;其他應用程式使用ContentReslover根據Uri去訪問操作指定資料 因為ContendP

安卓四大元件Activity學習

在安卓中各大控制元件都要依附Activity來完成與使用者的互動,Activity(活動)作為控制元件的平臺。介面的實現都要用到Activity,簡單的說Activity就是安卓的UI部分。 Activity的生命週期 一個Activity的建立與銷燬要經歷一下幾個方法: onCreat

Android 四大元件Service的啟動、繫結小述

一、概述 學習過Android的小夥伴就不可能不知道Service是什麼,因為Service是Android四大元件之一,聲名赫赫有木有,所以在這裡我就不詳細介紹了,本節主要還是充當筆記的作用,因為我待記性如初戀,記性虐我千百遍。 二、Service的建立 Service是一

Android 四大元件——Service(一)

一、什麼是服務        服務,是Android四大元件之一, 屬於 計算型元件。   長期後臺執行的沒有介面的元件 ,特點是無使用者介面、在後臺執行、生命週期長 二,什麼時候使用服務?  

Android 四大元件——Acitivity(四) Activity是如何載入顯示內容的?

1. 在Activity呼叫onCreate()等生命週期之前,Activity會呼叫attach()方法,而在attach()方法中會呼叫如下程式碼 onAttach() { PolicyManager.makeNewWindow(this) }而makeNewWindow實際

Android 四大元件——Acitivity(三) 深入瞭解Activity的啟動流程

上圖為整個Activity的啟動流程 接下來我們大概分析  在我們的Android系統中,應用程式是由Launcher這個應用啟動起來的。當我們安裝好應用程式之後,就會在Launcher的介面上生成一個圖示,我們點選圖示時Launch就會啟動我們的應用程式。 1.點選

Android 四大元件——Acitivity(二) 啟動模式

Activity的啟動模式共有4種 分別為   standard、singleTop、singleTask、singleInstance ; 四種啟動模式的配置都在Manifest檔案中配置,配置模板為 <activity