Android 四大組件學習之ContentProvider一

來源:互聯網
上載者:User

標籤:contentprovider以及url

ContentProvider作為四大組件之一,那它存在一定是有原因的? 那為什麼引用ContentProvider呢?  我們先看一個例子。

大家在生活中用手機,比如你按了360手機管家, 其中360手機管家就有一個簡訊,通話記錄,連絡人備份的功能。那手機裡的簡訊,連絡人都是存放在資料庫中的

比如連絡人的資訊是存放在contacts2.db中。既然資料是存放在資料庫中的,那360手機管家就必須拿到這個資料。但是contac2.db對別的使用者是沒有許可權的。那360是如何拿到手機連絡人這些資訊呢?

這時候Android系統就引入了ContentProvider。既然第三方程式不能直接操作資料庫裡的資料,但是第三方可以通過ContentProvider提供的介面去操作資料。所以說ContentProvider的作用就是:就是在不同應用程式之間實現資料的共用。就比如說連絡人程式,想把自己的資料共用給別人,但是又不能讓別人直接操作,所以連絡人程式就通過ContentProvider將自己的資料暴露出來。但是第三方程式想獲得該資料,就得必須通過ContentResolver去獲得該資料。

那既然訪問資料必須通過ContentResolver去訪問ContentProvider暴露出來的資料,那ContentResolver是如何知道資料在那裡存放的呢?前提是ContentProvider得告訴資料在那裡,你去那裡取。 這時候及引入另一個人概念Url。


提起URL,大家可能第一想法就是互連網上的URL(統一資源定位器)。此URL是互連網上的URL,而在Android系統中url代表的也是一個地址。但是兩者是有區別的:

比如就以百度首頁的圖片網址為例:

對比看看我們Android中的URL:


既然知道URL是幹什麼的,那接下來學習URL的一些常用的方法:

1: 將一個字串轉化為URL

Uri uri = Uri.parse("contengt://com.demo.contentprovider/user/1");

2:為url路徑加上ID部分

Uri uri = Uri.parse("content://com.demo.contentprovider/user");Uri resUri = ContentUris.withAppendedId(uri, 1);/*產生後的uri為: content://com.demo.contentprovider/user/1 */

3:匹配此URl是否合法

/*構造方法的預設值是返回-1, 代表時不匹配返回-1*/UriMatcher matcher = new UriMatcher(-1);/*如果匹配為:content://com.demo.contentprovider/user, 就返回為1*/matcher.addURI("com.demo.contentprovider", "user", 1);/*如果匹配為:content://com.demo.contentprovider/user/2, 就返回為2*/matcher.addURI("com.demo.contentprovider", "user/#", 2);//#代表萬用字元

今天關於ContentProvider以及URL的知識就說到這裡


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android 四大組件學習之ContentProvider一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.