歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 中ContentProvider和Uri詳解

Android 中ContentProvider和Uri詳解

日期:2017/3/1 9:57:15   编辑:Linux編程

一、使用ContentProvider(內容提供者)共享數據

ContentProvider在Android中的作用是對外共享數據,也就是說你可以通過ContentProvider把應用中的數據共享給其他應用訪問,其他應用可以通過ContentProvider對你應用中的數據進行添刪改查。關於數據共享,以前我們學習過文件操作模式,知道通過指定文件的操作模式為Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE同樣也可以對外共享數據。那麼,這裡為何要使用ContentProvider對外共享數據呢?是這樣的,如果采用文件操作模式對外共享數據,數據的訪問方式會因數據存儲的方式而不同,導致數據的訪問方式無法統一,如:采用xml文件對外共享數據,需要進行xml解析才能讀取數據;采用sharedpreferences共享數據,需要使用sharedpreferences API讀取數據。

使用ContentProvider對外共享數據的好處是統一了數據的訪問方式。

當應用需要通過ContentProvider對外共享數據時,第一步需要繼承ContentProvider並重寫下面方法:

publicclass PersonContentProvider extends ContentProvider{
publicboolean onCreate()
public Uri insert(Uri uri, ContentValues values)
publicint delete(Uri uri, String selection, String[] selectionArgs)
publicint update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
public String getType(Uri uri)
}

第二步需要在AndroidManifest.xml使用<provider>對該ContentProvider進行配置,為了能讓其他應用找到該ContentProvider ,ContentProvider采用了authorities(主機名/域名)對它進行唯一標識,你可以把ContentProvider看作是一個網站(想想,網站也是提供數據者),authorities 就是他的域名:

<manifest.... >
<application android:icon="@drawable/icon" android:label="@string/app_name">
<provider android:name=".PersonContentProvider"
android:authorities="com.ljq.providers.personprovider"/>
</application>
</manifest>

Copyright © Linux教程網 All Rights Reserved