步步為營_Android開發課[6]_ContentProvider學習

來源:互聯網
上載者:User

標籤:content   android   開發   共用   provider   

Focus on technology, enjoy life!—— QQ:804212028
瀏覽連結:http://blog.csdn.net/y18334702058/article/details/44624305

  • 主題:ContentProvider學習

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學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.