標籤:content android 開發 共用 provider
Focus on technology, enjoy life!—— QQ:804212028
瀏覽連結:http://blog.csdn.net/y18334702058/article/details/44624305
ContentProvider是什麼
ContentProvider(內容提供者)是Android中的四大組件之一。主要用於對外共用資料,也就是通過ContentProvider把應用中的資料共用給其他應用訪問,其他應用可以通過ContentProvider對指定應用中的資料進行操作。所以如果你想實現不同應用之間的資料共用,就不得不用content provider了。
ContentProvider的使用
1.主要方法有:
public boolean onCreate() 在建立ContentProvider時調用
public Cursor query(Uri, String[], String, String[], String) 用於查詢指定Uri的ContentProvider,返回一個Cursor
public Uri insert(Uri, ContentValues) 用於添加資料到指定Uri的ContentProvider中
public int update(Uri, ContentValues, String, String[]) 用於更新指定Uri的ContentProvider中的資料
public int delete(Uri, String, String[]) 用於從指定Uri的ContentProvider中刪除資料
public String getType(Uri) 用於返回指定的Uri中的資料的MIME類型
*如果操作的資料屬於集合類型,那麼MIME類型字串應該以vnd.android.cursor.dir/開頭。
例如:要得到所有person記錄的Uri為content://contacts/person,那麼返回的MIME類型字串為”vnd.android.cursor.dir/person”。
*如果要操作的資料屬於非集合類型資料,那麼MIME類型字串應該以vnd.android.cursor.item/開頭。
例如:要得到id為10的person記錄的Uri為content://contacts/person/10,那麼返回的MIME類型字串應為”vnd.android.cursor.item/person”。
2.使用執行個體(擷取通訊錄中電話號碼):
public class ContentProviderDemo extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); displayRecords(); } private void displayRecords() { //該數組中包含了所有要返回的欄位 String columns[] = new String[] { People.NAME, People.NUMBER }; Uri mContacts = People.CONTENT_URI; Cursor cur = managedQuery( mContacts, columns, // 要返回的資料欄位 null, // WHERE子句 null, // WHERE 子句的參數 null // Order-by子句 ); if (cur.moveToFirst()) { String name = null; String phoneNo = null; do { // 擷取欄位的值 name = cur.getString(cur.getColumnIndex(People.NAME)); phoneNo = cur.getString(cur.getColumnIndex(People.NUMBER)); Toast.makeText(this, name + ” ” + phoneNo, Toast.LENGTH_LONG).show(); } while (cur.moveToNext()); } }}
若需要修改裡面資訊,我們該怎麼辦呢?
我們可以使用ContentResolver.update()這個方法來修改資料,我們先來寫一個修改資料的方法:
private void updateRecord(int recNo, String name) { Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, recNo); ContentValues values = new ContentValues(); values.put(People.NAME, name); getContentResolver().update(uri, values, null, null);//利用ContentResolver.update()這個方法來修改資料}
現在我們可以調用上面的方法來更新資料了:
updateRecord(10, “小嘟嘟”); //更改第10條記錄的name欄位值為“小嘟嘟”
以此類推其他資料的添加,刪除等方法的實現也是類似這樣的。
Focus on technology, enjoy life!—— QQ:804212028
瀏覽連結:http://blog.csdn.net/y18334702058/article/details/44624305
步步為營_Android開發課[6]_ContentProvider學習