亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

contentprovider與contentresolver

2019-11-11 03:47:00
字體:
來源:轉載
供稿:網友

今天工作運用到了contentPRovider與contentresolver,下面是本人對這些的一些了解。

如下內容為從網絡轉載:使用ContentProvider共享數據:當應用繼承ContentProvider類,并重寫該類用于提供數據和存儲數據的方法,就可以向其他應用共享其數據。雖然使用其他方法也可以對外共享數據,但數據訪問方式會因數據存儲的方式而不同,如:采用文件方式對外共享數據,需要進行文件操作讀寫數據;采用sharedpreferences共享數據,需要使用sharedpreferences API讀寫數據。而使用ContentProvider共享數據的好處是統一了數據訪問方式。當應用需要通過ContentProvider對外共享數據時,第一步需要繼承ContentProvider并重寫下面方法:public class PersonContentProvider extends ContentProvider{   public boolean onCreate()   public Uri insert(Uri uri, ContentValues values)   public int delete(Uri uri, String selection, String[] selectionArgs)   public int 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="cn.itcast.provider.personprovider"/>    </application></manifest>注意:一旦應用繼承了ContentProvider類,后面我們就會把這個應用稱為ContentProvider(內容提供者)。l

 

 

Uri介紹:Uri代表了要操作的數據,Uri主要包含了兩部分信息:1》需要操作的ContentProvider ,2》對ContentProvider中的什么數據進行操作,一個Uri由以下幾部分組成:lContentProvider(內容提供者)的scheme已經由Android所規定, scheme為:content://主機名(或叫Authority)用于唯一標識這個ContentProvider,外部調用者可以根據這個標識來找到它。路徑(path)可以用來表示我們要操作的數據,路徑的構建應根據業務而定,如下:要操作person表中id為10的記錄,可以構建這樣的路徑:/person/10要操作person表中id為10的記錄的name字段, person/10/name要操作person表中的所有記錄,可以構建這樣的路徑:/person要操作xxx表中的記錄,可以構建這樣的路徑:/xxx當然要操作的數據不一定來自數據庫,也可以是文件等他存儲方式,如下:要操作xml文件中person節點下的name節點,可以構建這樣的路徑:/person/name如果要把一個字符串轉換成Uri,可以使用Uri類中的parse()方法,如下:Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person")lUriMatcher類使用介紹:因為Uri代表了要操作的數據,所以我們很經常需要解析Uri,并從Uri中獲取數據。Android系統提供了兩個用于操作Uri的工具類,分別為UriMatcher 和ContentUris 。掌握它們的使用,會便于我們的開發工作。UriMatcher類用于匹配Uri,它的用法如下:首先第一步把你需要匹配Uri路徑全部給注冊上,如下://常量UriMatcher.NO_MATCH表示不匹配任何路徑的返回碼UriMatcher  sMatcher = new UriMatcher(UriMatcher.NO_MATCH);//如果match()方法匹配content://cn.itcast.provider.personprovider/person路徑,返回匹配碼為1sMatcher.addURI(“cn.itcast.provider.personprovider”, “person”, 1);//添加需要匹配uri,如果匹配就會返回匹配碼//如果match()方法匹配content://cn.itcast.provider.personprovider/person/230路徑,返回匹配碼為2sMatcher.addURI(“cn.itcast.provider.personprovider”, “person/#”, 2);//#號為通配符switch (sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10"))) {   case 1    break;   case 2    break;   default://不匹配    break;}注冊完需要匹配的Uri后,就可以使用sMatcher.match(uri)方法對輸入的Uri進行匹配,如果匹配就返回匹配碼,匹配碼是調用addURI()方法傳入的第三個參數,假設匹配content://cn.itcast.provider.personprovider/person路徑,返回的匹配碼為1lContentUris類使用介紹:ContentUris類用于獲取Uri路徑后面的ID部分,它有兩個比較實用的方法:withAppendedId(uri, id)用于為路徑加上ID部分:Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person")Uri resultUri = ContentUris.withAppendedId(uri, 10);//生成后的Uri為:content://cn.itcast.provider.personprovider/person/10parseId(uri)方法用于從路徑中獲取ID部分:Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/10")long personid = ContentUris.parseId(uri);//獲取的結果為:10l使用ContentProvider共享數據:ContentProvider類主要方法的作用:public boolean onCreate()該方法在ContentProvider創建后就會被調用, Android在系統啟動時就會創建ContentProvider 。public Uri insert(Uri uri, ContentValues values)該方法用于供外部應用往ContentProvider添加數據。public int delete(Uri uri, String selection, String[] selectionArgs)該方法用于供外部應用從ContentProvider刪除數據。public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)該方法用于供外部應用更新ContentProvider中的數據。public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)該方法用于供外部應用從ContentProvider中獲取數據。public String getType(Uri uri)該方法用于返回當前Url所代表數據的MIME類型。如果操作的數據屬于集合類型,那么MIME類型字符串應該以vnd.android.cursor.dir/開頭,例如:要得到所有person記錄的Uri為content://cn.itcast.provider.personprovider/person,那么返回的MIME類型字符串應該為:“vnd.android.cursor.dir/person”。如果要操作的數據屬于單一數據,那么MIME類型字符串應該以vnd.android.cursor.item/開頭,例如:得到id為10的person記錄,Uri為content://cn.itcast.provider.personprovider/person/10,那么返回的MIME類型字符串應該為:“vnd.android.cursor.item/person”。l使用ContentResolver操作ContentProvider中的數據:當外部應用需要對ContentProvider中的數據進行添加、刪除、修改和查詢操作時,可以使用ContentResolver 類來完成,要獲取ContentResolver 對象,可以使用Activity提供的getContentResolver()方法。 ContentResolver 類提供了與ContentProvider類相同簽名的四個方法:public Uri insert(Uri uri, ContentValues values)該方法用于往ContentProvider添加數據。public int delete(Uri uri, String selection, String[] selectionArgs)該方法用于從ContentProvider刪除數據。public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)該方法用于更新ContentProvider中的數據。public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)該方法用于從ContentProvider中獲取數據。這些方法的第一個參數為Uri,代表要操作的是哪個ContentProvider和對其中的什么數據進行操作,假設給定的是: Uri.parse(“content://cn.itcast.provider.personprovider/person/10”),那么將會對主機名為cn.itcast.provider.personprovider的ContentProvider進行操作,操作的數據為person表中id為10的記錄l使用ContentResolver操作ContentProvider中的數據:使用ContentResolver對ContentProvider中的數據進行添加、刪除、修改和查詢操作:ContentResolver resolver =  getContentResolver();Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person");//添加一條記錄ContentValues values = new ContentValues();values.put("name", "itcast");values.put("age", 25);resolver.insert(uri, values);//獲取person表中所有記錄Cursor cursor = resolver.query(uri, null, null, null, "personid desc");while(cursor.moveToNext()){Log.i("ContentTest", "personid="+ cursor.getInt(0)+ ",name="+ cursor.getString(1));}//把id為1的記錄的name字段值更改新為limingContentValues updateValues = new ContentValues();updateValues.put("name", "liming");Uri updateIdUri = ContentUris.withAppendedId(uri, 2);resolver.update(updateIdUri, updateValues, null, null);//刪除id為2的記錄Uri deleteIdUri = ContentUris.withAppendedId(uri, 2);resolver.delete(deleteIdUri, null, null);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人拍精品视频午夜网站| 国产亚洲精品久久久久久| 亚洲最大福利视频网| 亚洲成人教育av| 日本午夜在线亚洲.国产| 亚洲伊人一本大道中文字幕| 欧美一级大片在线免费观看| 热久久这里只有精品| 91在线无精精品一区二区| 日韩中文字幕网站| 亚洲一区二区三区视频| 亚洲成人网av| 国产精品亚洲自拍| 日韩小视频网址| 精品毛片网大全| 亚洲欧美日韩中文视频| 丝袜美腿亚洲一区二区| 成人网欧美在线视频| 国产精品福利小视频| 成人午夜激情免费视频| 欧美激情一区二区三区久久久| 国产精品电影久久久久电影网| 欧美日韩国产91| 日韩精品免费在线观看| 成人福利网站在线观看| 51午夜精品视频| 久久久久久久一区二区三区| 国产欧美一区二区三区在线| 久久久久久久亚洲精品| 久久亚洲影音av资源网| 92看片淫黄大片看国产片| www国产亚洲精品久久网站| 国产精品久久久久久av福利软件| 国产精品久久久久免费a∨大胸| 久久天天躁狠狠躁夜夜躁2014| 欧美老少配视频| 国产亚洲欧洲高清一区| 亚洲一区二区三区视频| 精品久久久久久久久国产字幕| 久久久国产在线视频| 国产精品麻豆va在线播放| 日本韩国在线不卡| 欧美成人精品在线| 国产一区二区三区免费视频| 国产女精品视频网站免费| 亚洲**2019国产| 精品亚洲永久免费精品| 欧美一级视频在线观看| 日本午夜在线亚洲.国产| 中文字幕亚洲综合| 久久99青青精品免费观看| 亚洲91精品在线观看| 精品视频在线导航| 超碰精品一区二区三区乱码| 久久天天躁狠狠躁夜夜爽蜜月| 国产视频在线一区二区| 亚洲国产99精品国自产| 亚洲国产成人久久综合一区| 亚洲精品白浆高清久久久久久| 久久99国产精品久久久久久久久| 亚洲人高潮女人毛茸茸| 久久亚洲精品国产亚洲老地址| 久久国产视频网站| 国产精品美女在线| 亚洲第一精品夜夜躁人人爽| 国产精品自产拍在线观看中文| 国产香蕉97碰碰久久人人| 欧美激情手机在线视频| xxx成人少妇69| 中文字幕国产精品| 国产日韩欧美中文在线播放| 成人网中文字幕| 永久555www成人免费| 狠狠做深爱婷婷久久综合一区| 成人黄色影片在线| 亚洲成人久久电影| 亚洲第一网站男人都懂| 亚洲成人1234| 国产精品视频在线播放| 日韩电视剧免费观看网站| 国模精品视频一区二区三区| 国产精品美女主播| 136fldh精品导航福利| 欧美国产精品人人做人人爱| 亚洲精品欧美极品| 亚洲3p在线观看| 久久久精品一区| 国产最新精品视频| 亚洲第一网站男人都懂| 日韩高清a**址| 在线播放日韩av| 另类少妇人与禽zozz0性伦| 欧美日韩性视频在线| 亚洲欧美精品在线| 91高潮精品免费porn| 色婷婷**av毛片一区| 久久青草福利网站| 成人xvideos免费视频| 国产精欧美一区二区三区| 欧美日韩亚洲精品内裤| 久久香蕉国产线看观看网| 欧美视频国产精品| 国产美女久久精品香蕉69| 国产精品久久久久91| 久久天天躁狠狠躁夜夜爽蜜月| 国产欧美精品一区二区三区-老狼| 国产精品成av人在线视午夜片| 国产在线拍偷自揄拍精品| 91香蕉嫩草神马影院在线观看| 亚洲电影免费在线观看| 91精品国产综合久久男男| 97香蕉久久夜色精品国产| 国产精品高潮呻吟视频| 国产精欧美一区二区三区| 美女久久久久久久久久久| 日韩视频在线观看免费| 久久精品视频在线| 欧美在线性爱视频| 日韩精品在线免费| 日韩精品视频免费在线观看| 久久综合伊人77777蜜臀| 亚洲国产精品一区二区久| 欧美三级免费观看| 欧美亚洲国产日韩2020| 久久视频国产精品免费视频在线| 欧美巨猛xxxx猛交黑人97人| 国产一区二区三区视频| 136fldh精品导航福利| 国产精品av网站| 国产日韩欧美91| 国产一区二中文字幕在线看| 亚洲a成v人在线观看| 国产成人精品国内自产拍免费看| 亚洲精品一区中文字幕乱码| 亚洲91av视频| 欧美精品在线网站| 伊人久久男人天堂| 日本视频久久久| 最近2019中文字幕第三页视频| 国产色视频一区| 亚洲国产中文字幕久久网| 亚洲欧美一区二区三区久久| 欧美性猛交xxxxx水多| 亚洲欧洲高清在线| 欧美日韩在线视频首页| 亚洲视频欧美视频| 91丝袜美腿美女视频网站| www.99久久热国产日韩欧美.com| 色天天综合狠狠色| 成人美女av在线直播| 亚洲精品中文字幕有码专区| 成人在线播放av| 欧美性猛交xxxx黑人猛交| 日韩av最新在线观看| 日韩精品有码在线观看| 日本欧美一级片| 国产精品入口夜色视频大尺度| 久久综合伊人77777尤物| 久久久免费av| 91网站免费看| 国产不卡在线观看| 久久综合国产精品台湾中文娱乐网| 在线免费看av不卡| 韩国精品美女www爽爽爽视频|