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

首頁 > 系統 > Android > 正文

Android編程使用內容提供者方式(ContentProvider)進行存儲的方法

2020-04-11 11:04:18
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程使用內容提供者方式進行存儲的方法。分享給大家供大家參考,具體如下:

內容提供者(ContentProvider)主要作用是對外共享數據,如果數據通過內容提供者對外共享了,那么其他應用就可以從內容提供者中查詢到數據,并且可更新數據、刪除數據、添加數據,如果采用文件的操作模式對外共享數據,數據的訪問方式會因為存儲方式的不同導致數據的訪問方式無法得到統一,不同存儲方式文件對外進行共享其訪問的ApI是不一樣的,如果采用內容提供者對外共享數據就會統一了數據的訪問方式。采用統一的API訪問共享的數據。

創建內容提供者步驟

1.創建內容提供者需要繼承android.content.ContentProvider

2.清單文件中進行配置:

<!--android:name:指定內容提供者的類名,android:authorities:調用內容..名稱,隨意取  -->
<provider android:name=".PersonProvider" android:authorities="cn.test.providers.personprovider"/>

ContentProvider類主要方法

復制代碼 代碼如下:
public boolean onCreate()

該方法在ContentProvider創建后就會被調用, Android開機后, ContentProvider在其它應用第一次訪問它時才會被創建。
復制代碼 代碼如下:
public Uriinsert(Uri uri, ContentValues values)

該方法用于供外部應用往ContentProvider添加數據。
復制代碼 代碼如下:
public int delete(Uri uri, String selection,String[] selectionArgs)

該方法用于供外部應用從ContentProvider刪除數據。
復制代碼 代碼如下:
public int update(Uri uri, ContentValues values, Stringselection, String[] selectionArgs)

該方法用于供外部應用更新ContentProvider中的數據。
復制代碼 代碼如下:
public Cursorquery(Uri uri, String[]projection, String selection, String[] selectionArgs, String sortOrder)

該方法用于供外部應用從ContentProvider中獲取數據。

示例:

內容提供者類,實現數據的增刪改查

public class PersonProvider extends ContentProvider {  //創建工具類實現Uri匹配  private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);  private static final int PERSONS = 1;  private static final int PERSON = 2;  static{    MATCHER.addURI("cn.test.providers.personprovider", "person", PERSONS);    MATCHER.addURI("cn.test.providers.personprovider", "person/#", PERSON);  }  private DBOpenHelper dbOpenHelper = null;  @Override  public boolean onCreate() {    dbOpenHelper = new DBOpenHelper(getContext());    return true;  }  @Override  public Cursor query(Uri uri, String[] projection, String selection,      String[] selectionArgs, String sortOrder) {    SQLiteDatabase db = dbOpenHelper.getReadableDatabase();    switch (MATCHER.match(uri)) {    case PERSONS: // 獲取person表中的所有數據  /person      return db.query("person", projection, selection, selectionArgs, null, null, sortOrder);    case PERSON: // 獲取person表中的指定id的數據 /person/20      long id = ContentUris.parseId(uri);      String where = "personid="+ id;      if(selection!=null && !"".equals(selection.trim())){        where += " and "+ selection;      }      return db.query("person", projection, where, selectionArgs, null, null, sortOrder);    default:      throw new IllegalArgumentException("Unknown Uri:"+ uri);    }  }  @Override  public String getType(Uri uri) {    // TODO Auto-generated method stub    return null;  }  @Override  public Uri insert(Uri uri, ContentValues values) {    //取得數據庫操作實例    SQLiteDatabase db = dbOpenHelper.getWritableDatabase();    switch (MATCHER.match(uri)) {    case PERSONS:      //執行添加,返回行號,如果主健字段是自增長的,那么行號會等于主鍵id      long rowid = db.insert("person", "name", values);      //得到拼好的uri      Uri insertUri = ContentUris.withAppendedId(uri, rowid);      //發出數據變化通知(person表的數據發生變化)      getContext().getContentResolver().notifyChange(uri, null);      return insertUri;    default:      //不能識別uri      throw new IllegalArgumentException("Unknown Uri:"+ uri);    }  }  @Override  public int delete(Uri uri, String selection, String[] selectionArgs) {    SQLiteDatabase db = dbOpenHelper.getWritableDatabase();    //受影響的行數    int num = 0;    switch (MATCHER.match(uri)) {    case PERSONS: // 刪除person表中的所有數據  /person      num = db.delete("person", selection, selectionArgs);      break;    case PERSON: // 刪除person表中的指定id的數據 /person/20      long id = ContentUris.parseId(uri);      String where = "personid="+ id;      if(selection!=null && !"".equals(selection.trim())){        where += " and "+ selection;      }      num = db.delete("person", where, selectionArgs);      break;    default:      throw new IllegalArgumentException("Unknown Uri:"+ uri);    }    return num;  }  @Override  public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {    SQLiteDatabase db = dbOpenHelper.getWritableDatabase();    int num = 0;    switch (MATCHER.match(uri)) {    case PERSONS: // 更新person表中的所有數據  /person      num = db.update("person", values, selection, selectionArgs);      break;    case PERSON: // 更新person表中的指定id的數據 /person/20      long id = ContentUris.parseId(uri);      String where = "personid="+ id;      if(selection!=null && !"".equals(selection.trim())){        where += " and "+ selection;      }      num = db.update("person", values, where, selectionArgs);      break;    default:      throw new IllegalArgumentException("Unknown Uri:"+ uri);    }    return num;  }}

其他工程中訪問:

public class AccessContentProiderTest extends AndroidTestCase {  public void testInsert() throws Throwable{    ContentResolver resolver = getContext().getContentResolver();    Uri uri = Uri.parse("content://cn.test.providers.personprovider/person");    ContentValues values = new ContentValues();    values.put("name", "lili");    values.put("phone", "110");    values.put("amount", "3000000000");    resolver.insert(uri, values);  }  public void testDelete() throws Throwable{    ContentResolver resolver = getContext().getContentResolver();    Uri uri = Uri.parse("content://cn.test.providers.personprovider/person");    int num =resolver.delete(uri, null, null);  }  public void testUpdate() throws Throwable{    ContentResolver resolver = getContext().getContentResolver();    Uri uri = Uri.parse("content://cn.test.providers.personprovider/person/65");    ContentValues values = new ContentValues();    values.put("amount", 500);    resolver.update(uri, values, null, null);  }  public void testQuery() throws Throwable{    ContentResolver resolver = getContext().getContentResolver();    Uri uri = Uri.parse("content://cn.test.providers.personprovider/person/65");    Cursor cursor = resolver.query(uri, null, null, null, "personid asc");    while(cursor.moveToNext()){      String name = cursor.getString(cursor.getColumnIndex("name"));      Log.i("AccessContentProviderTest", name);    }  }}

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
xxxx欧美18另类的高清| 国产精品入口免费视频一| 日韩午夜在线视频| 日韩欧美精品网站| 欧美激情在线一区| 亚洲精品国产精品久久清纯直播| 亚洲成av人片在线观看香蕉| 久久人91精品久久久久久不卡| 永久555www成人免费| 日韩免费不卡av| 国产精品青草久久久久福利99| 91极品视频在线| 日韩av在线免播放器| 91视频8mav| 久久久久久久久久久成人| 亚洲欧美日韩中文在线制服| 日韩综合中文字幕| 深夜成人在线观看| 精品国产一区二区三区久久久狼| 疯狂欧美牲乱大交777| 国产精品第七影院| 中文字幕亚洲欧美日韩在线不卡| 久久成人精品一区二区三区| 成人国产精品一区| 亚洲精品免费一区二区三区| 欧美日韩在线视频一区二区| 欧美与黑人午夜性猛交久久久| 欧美在线国产精品| 91在线观看免费| 欧美成人精品激情在线观看| 亚洲福利视频二区| 一区二区三区四区精品| 精品视频9999| 日韩综合中文字幕| 国产亚洲一区精品| 欧美在线视频观看免费网站| 国产成人自拍视频在线观看| 搡老女人一区二区三区视频tv| 精品av在线播放| 久久中文字幕视频| 久久久久久久一区二区| 秋霞午夜一区二区| 亚洲毛片在线免费观看| 亚洲精品福利在线| 久久久久久久999| 欧美午夜女人视频在线| 欧美最猛性xxxxx免费| 1769国内精品视频在线播放| 日韩精品一区二区视频| 久久人人爽人人爽人人片亚洲| 91精品久久久久久久久久入口| 日韩精品在线观看网站| 欧美色视频日本版| 国产精品中文字幕在线观看| 中文.日本.精品| 国产大片精品免费永久看nba| 亚洲精美色品网站| 91九色单男在线观看| 国模精品一区二区三区色天香| 成人免费网站在线观看| 欧美亚洲国产视频| 国产精品日本精品| 日韩av在线播放资源| 国产精品扒开腿做| 国产99久久精品一区二区永久免费| 中文字幕精品一区久久久久| 久久视频在线直播| 国产成+人+综合+亚洲欧美丁香花| 日韩美女在线看| 欧美国产日本高清在线| 欧美刺激性大交免费视频| 久久久久成人网| 毛片精品免费在线观看| 国产精品久久久久久av下载红粉| 亚洲一区二区三区777| 美女av一区二区| 日本sm极度另类视频| 中文字幕欧美日韩精品| 97人洗澡人人免费公开视频碰碰碰| 8050国产精品久久久久久| 视频一区视频二区国产精品| 日韩一区在线视频| 久久精品成人欧美大片| 久久91精品国产91久久久| 亚洲国产精品字幕| 91视频免费网站| 亚洲理论片在线观看| 97在线免费观看视频| 欧美性猛交xxxx乱大交蜜桃| 国产日韩精品入口| 久热精品视频在线| 26uuu亚洲伊人春色| 国产精品视频男人的天堂| 97国产精品人人爽人人做| 国产精品扒开腿做爽爽爽男男| 91精品综合视频| 亚洲福利视频二区| 久久91亚洲精品中文字幕| 亚洲精品免费av| 久久人91精品久久久久久不卡| 一本色道久久综合狠狠躁篇怎么玩| 久久在精品线影院精品国产| 国产精品看片资源| 精品中文字幕视频| 欧美在线观看视频| 精品国产一区av| 久久香蕉频线观| 777777777亚洲妇女| 欧美激情影音先锋| 亚洲欧美日韩爽爽影院| 国产精品爽黄69天堂a| 91av在线播放| 国产v综合v亚洲欧美久久| 日韩免费观看高清| 欧美国产激情18| 日产精品99久久久久久| 亚洲精品色婷婷福利天堂| 日韩成人在线播放| 亚洲免费影视第一页| 久久久国产成人精品| 欧美一级淫片播放口| 欧美www在线| 青青久久av北条麻妃海外网| 久久亚洲综合国产精品99麻豆精品福利| 美女精品视频一区| 国产v综合v亚洲欧美久久| 欧美在线精品免播放器视频| 成人激情视频在线播放| 日日骚久久av| 国产精品91久久久久久| 欧美韩日一区二区| 国产精品国产亚洲伊人久久| 久久久精品久久久久| 国产精品第七影院| 69久久夜色精品国产7777| 成人国产精品久久久久久亚洲| 91在线高清免费观看| www.日韩av.com| 91精品国产自产在线观看永久| 色哟哟网站入口亚洲精品| 国产成人精品网站| 欧美黑人一级爽快片淫片高清| 成人在线中文字幕| 精品久久久久久久久中文字幕| 亚洲精品久久久久国产| 日韩国产在线播放| 欧美尤物巨大精品爽| 91av网站在线播放| 国产91在线播放九色快色| 成人情趣片在线观看免费| 国产精品亚洲一区二区三区| 日韩av电影免费观看高清| 久久亚洲精品一区二区| 欧美最猛性xxxxx亚洲精品| 亚洲欧美精品一区二区| 欧美午夜片欧美片在线观看| 欧美自拍视频在线观看| 日韩网站在线观看| 8050国产精品久久久久久| 精品久久久久久国产| 久久精视频免费在线久久完整在线看| 亚洲福利影片在线| 国产精品自产拍在线观看中文| 国产日韩欧美电影在线观看|