真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ContentProvider-創(chuàng)新互聯(lián)

ContentProvider內(nèi)容提供者 ContentProvider

Android是基于Linux系統(tǒng),每個用戶有獨立的進程,這些進程之間是不能互相訪問的,如果有需要在各個用戶之間共享數(shù)據(jù),我們需要使用CotentProivder實現(xiàn)。另外,ContentProvider可以提供一個統(tǒng)一的接口使上層調(diào)用者不用關(guān)心數(shù)據(jù)存儲的細(xì)節(jié)問題。

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的高坪網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

URI
content:// com.anjoyo.myfirstprovider/mitt/12
----A-----|-----------B--------------|--C--|D
A.標(biāo)準(zhǔn)前綴表明這個數(shù)據(jù)被一個內(nèi)容提供器所控制。
B.URI的權(quán)限部分;它標(biāo)識這個內(nèi)容提供器。對于第三方應(yīng)用程序,這應(yīng)該是一個全稱類名以確保唯一性。權(quán)限在元素的權(quán)限屬性中進行聲明:

C.用來判斷請求數(shù)據(jù)類型的路徑。這可以是0或多個段長。這個分段可以沒有。
D.被請求的特定記錄的ID,如果有的話。這是被請求記錄的_ID數(shù)值。如果這個請求不局限于單個記錄, 這個分段和尾部的斜線會被忽略。

-----------
每一個ContentProvider都擁有一個公共的URI,這個URI用于表示這個ContentProvider所提供的數(shù)據(jù)。
Android所提供的ContentProvider都存放在android.provider包當(dāng)中。

-----------
ContentProvider的函數(shù)
query() 查詢
insert() 插入
update() 更新
delete() 刪除
getType() 得到數(shù)據(jù)類型
onCreate() 創(chuàng)建時的回調(diào)函數(shù)
------------
實現(xiàn)ContentProvider過程
1.定義一個類,繼承ContentProvider
2.定義一個CONTENT_URI常量
3.實現(xiàn)query,insert,update,delete,getType和onCreate方法
4.在AndroidManifest.xml中聲明

---------------
Uri insertedUri = ContentUris.withAppendedId(uri, rowId);
重新構(gòu)建一個URI對象,如果uri是content://contacts/people,
rowId是45。重新構(gòu)建的URI是content://contacts/people/45
getContext().getContentResolver().notifyChange(insertedUri, null);
notifyChange()方法則用來通知注冊在此URI上的觀察者(observer)數(shù)據(jù)發(fā)生了改變。最后返回刪除或修改數(shù)據(jù)的行數(shù)。

ContentUris是Uri的工具類。其主要方法有:
1):把id拼接到Uri上,然后生成新的Uri
Uri insertUri = ContentUris.withAppendedId(uri,id);
2)解析Uri的id部分
long id = ContentUris.parseId(uri);

另外:uri有個方法是getPathSegments()是獲取uri的每一部分,返回值是List

List list = uri.getPathSegments();
System.out.println(list);
String idstr = list.get(list.size()-1);
long id = Long.parseLong(idstr);
//等價于下邊代碼
long id = ContentUris.parseId(uri);

-------------------------

如何訪問ContentProvider?
step1.獲取ContentResolver對象
ContentResolver cr = mContent.getContentResolver();
Cursor c = cr.query(Uri,...);
Uri insertedUri = cr.insert(Uri,...);
...

SqliteQueryBuilder使用。它是在查詢時候,可以靈活添加查詢條件。不能執(zhí)行添加更新等操作。

@Override
public Cursor query(Uri uri, String[] projection, String selection,
        String[] selectionArgs, String sortOrder) {
    SQLiteQueryBuilder builder= new SQLiteQueryBuilder();
switch (uriMatcher.match(uri)) {
case PERSONS:
        builder.setTables("mitt_tb");
break;
case PERSON:
        builder.setTables("mitt_tb");
long id = ContentUris.parseId(uri);
//添加查詢條件        builder.appendWhere("id="+id);
break;
    }
    SQLiteDatabase db= helper.getReadableDatabase();
    Cursor c= builder.query(db, projection, selection, selectionArgs, null, null, sortOrder);
return c;
}

本文題目:ContentProvider-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/csjecc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部