日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android数据存储之sharedpreferences与Content Provider

發布時間:2024/7/23 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android数据存储之sharedpreferences与Content Provider 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

android中對數據操作包含有:

file, sqlite3, Preferences, ContectResolver與ContentProvider前三種數據操作方式都只是針對本應用內數據,程序不能通過這三種方法去操作別的應用內的數據

其中sqlite3已經在上一節中講述了,本節主要包含sharedpreferences與ContentProvider

sharedpreferences保存數據

//實例化SharedPreferences對象(第一步) SharedPreferences mySharedPreferences= getSharedPreferences("test", Activity.MODE_PRIVATE); //實例化SharedPreferences.Editor對象(第二步) SharedPreferences.Editor editor = mySharedPreferences.edit(); //用putString的方法保存數據 editor.putString("name", "Karl"); editor.putString("habit", "sleep"); //提交當前數據 editor.commit(); //使用toast信息提示框提示成功寫入數據 Toast.makeText(this, "數據成功寫入SharedPreferences!" , Toast.LENGTH_LONG).show();

執行以上代碼,SharedPreferences將會把這些數據保存在test.xml文件中,可以在File Explorer的data/data/相應的包名/test.xml 下導出該文件,并查看。

2、使用SharedPreferences讀取數據方法如下:

//同樣,在讀取SharedPreferences數據前要實例化出一個SharedPreferences對象 SharedPreferencessharedPreferences= getSharedPreferences("test", Activity.MODE_PRIVATE); // 使用getString方法獲得value,注意第2個參數是value的默認值 String name =sharedPreferences.getString("name", ""); String habit =sharedPreferences.getString("habit", ""); //使用toast信息提示框顯示信息 Toast.makeText(this, "讀取數據如下:"+"\n"+"name:" + name + "\n" + "habit:" + habit, Toast.LENGTH_LONG).show();

內容提供者

在manifest文件中注冊,安卓四大組件都要在其中注冊

provider android:name="com.zj.sqlitedemo.providers.PersonContentProvider"android:authorities="com.zj.sqlitedemo.providers.PersonContentProvider"></provider>

設置訪問路徑,供其他調用者訪問

private final static String authority ="com.zj.sqlitedemo.providers.PersonContentProvider";private final static int PERSON_INSERT_CODE=0;private final static int PERSON_DELETE_CODE=1;private final static int PERSON_UPDATE_CODE=2;private final static int PERSON_QUERY_ALL_CODE=3;private final static UriMatcher uriMatcher;private PersonSQLiteOpenHelper mOpenHelper;static{uriMatcher=new UriMatcher(UriMatcher.NO_MATCH);//添加一些URIuriMatcher.addURI(authority, "person/insert", PERSON_INSERT_CODE);uriMatcher.addURI(authority, "person/delete", PERSON_DELETE_CODE);uriMatcher.addURI(authority, "person/update", PERSON_UPDATE_CODE);uriMatcher.addURI(authority, "person/queryAll", PERSON_QUERY_ALL_CODE);}

主要方法:

 

 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”。

方法實現

查詢方法

public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {// TODO Auto-generated method stubswitch(uriMatcher.match(uri)){case PERSON_QUERY_ALL_CODE://從表中更新SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){Cursor cursor= db.query("person", projection, selection, selectionArgs,null,null,sortOrder);return cursor;}break;default:throw new IllegalArgumentException("URI不匹配"+uri);}return null;}

插入方法

public Uri insert(Uri uri, ContentValues values) {// TODO Auto-generated method stubswitch(uriMatcher.match(uri)){case PERSON_INSERT_CODE://添加到表中SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){long id=db.insert("person", null, values);db.close();return ContentUris.withAppendedId(uri, id);}break;default:throw new IllegalArgumentException("URI不匹配");}return null;}

刪除方法實現

public int delete(Uri uri, String selection, String[] selectionArgs) {// TODO Auto-generated method stubswitch(uriMatcher.match(uri)){case PERSON_DELETE_CODE://從表中刪除SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){int count=db.delete("person", selection, selectionArgs);db.close();return count;}break;default:throw new IllegalArgumentException("URI不匹配"+uri);}return 0;}

更新方法實現

public int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {// TODO Auto-generated method stubswitch(uriMatcher.match(uri)){case PERSON_UPDATE_CODE://從表中更新SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){int count=db.update("person", values, selection, selectionArgs);db.close();return count;}break;default:throw new IllegalArgumentException("URI不匹配"+uri);}return 0;}

得到類型

public String getType(Uri uri) {// TODO Auto-generated method stubswitch(uriMatcher.match(uri)){case PERSON_QUERY_ALL_CODE:return "vnd.android.cursor.dir/person";default:break;}return null;}

注意: *如果操作的數據屬于集合類型,那么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”。

例如此處就用了vnd.android.cursor.dir開頭

ContentResolver解析內容提供者提供的數據,當外部應用需要對ContentProvider中的數據進行添加、刪除、修改和查詢操作時,可以使用ContentResolver類來完成,要獲取ContentResolver對象,可以使用Context提供的getContentResolver()方法


插入實現

public void testInsert(){Uri uri=Uri.parse("content://com.zj.sqlitedemo.providers.PersonContentProvider/person/insert");ContentResolver resolver= getContext().getContentResolver();ContentValues values=new ContentValues();values.put("name", "在嗎");values.put("age", 25);uri=resolver.insert(uri,values);Log.i(tag, "uri"+uri);long id=ContentUris.parseId(uri);Log.i(tag, "添加到"+id);}

刪除實現

public void testDelete(){Uri uri=Uri.parse("content://com.zj.sqlitedemo.providers.PersonContentProvider/person/delete");ContentResolver resolver= getContext().getContentResolver();String where="_id=?";String []selectionArgs={"21"};int count=resolver.delete(uri, where, selectionArgs);Log.i(tag, "刪除了行:"+count);}

更新實現

public void testUpdate(){Uri uri=Uri.parse("content://com.zj.sqlitedemo.providers.PersonContentProvider/person/delete");ContentResolver resolver= getContext().getContentResolver();ContentValues values=new ContentValues();values.put("name", "zj");int count=resolver.update(uri, values, "_id=?", new String[]{"20"});Log.i(tag, "更新了"+count);}

查詢實現

public void testQueryAll(){Uri uri=Uri.parse("content://com.zj.sqlitedemo.providers.PersonContentProvider/person/queryAll");ContentResolver resolver= getContext().getContentResolver();Cursor cursor=resolver.query(uri, new String[]{"_id","name","age"}, null, null, null);if(cursor!=null&&cursor.getCount()>0){int id;String name;int age;while(cursor.moveToNext()){id=cursor.getInt(0);name=cursor.getString(1);age=cursor.getInt(2);Log.i(tag, "id:"+id+"name:"+name+"age:"+age);}cursor.close();}}

內容提供者與sharedpreferences完成

總結

以上是生活随笔為你收集整理的Android数据存储之sharedpreferences与Content Provider的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产毛片一区 | 丰满少妇被猛烈进入高清播放 | 天天干天天爱天天射 | 欧美日韩亚洲国产精品 | 麻豆视频免费版 | 性一交一乱一乱一视频 | 精品久久久久久久久久久久久久 | 人体私拍套图hdxxxx | 人妖ts福利视频一二三区 | 蜜桃视频在线播放 | 婷婷婷色 | 国产尤物视频在线 | 韩日视频在线观看 | 亚洲 欧美 国产 另类 | 天堂岛av| 日本午夜三级 | 久久高清| 久久影视中文字幕 | 精品国产乱码久久久久久牛牛 | 伊人影片 | 羞辱狗奴的句子有哪些 | 你懂得在线 | 一级a毛片 | 91色九色 | 天堂8av | 日本成人一区 | xxxx毛片| 超碰人人草人人干 | 色花av| 欧美在线va | 午夜影院在线观看免费 | 日本中文字幕精品 | 99re视频 | 小柔的淫辱日记(1~7) | 九色视频91| 男女搞黄网站 | 免费的三级网站 | 国产在线视频卡一卡二 | 99热国 | 精品人伦一区二区三区蜜桃免费 | 尤物视频在线观看国产 | 午夜亚洲aⅴ无码高潮片苍井空 | 人与性动交zzzzbbbb | www.奇米 | 玖玖精品视频 | 国产精品高潮AV无码 | 国产美女精品久久 | 国产又粗又硬又黄的视频 | 久久久噜噜噜www成人 | av一二三 | 日韩精品免费一区二区在线观看 | 夜夜久久久 | 黄色成人在线播放 | 国产白嫩美女无套久久 | 日韩av一区二区三区四区 | 国产精品日韩专区 | 国产美女在线免费观看 | 污污的视频在线观看 | 天堂网成人 | 国产ts人妖系列高潮 | 欧美xxxx×黑人性爽 | 国产成人啪免费观看软件 | 色乱码一区二区三区 | 韩国成人在线 | 久久爱一区二区 | 葵司免费一区二区三区四区五区 | 在线观看成人 | 一级黄色大片在线观看 | 日本xxxxxxxxx | 怡红院国产 | 四虎www | 黄色欧美在线观看 | 中文字幕第99页 | 亚洲青青操| 欧美大胆a视频 | 操干网| 亚洲精品色午夜无码专区日韩 | 国产伦精品一区二区三区视频免费 | 人人爽人人插 | 久久久久久亚洲av毛片大全 | 亚洲精品国产精品乱码视色 | 欧美三级大片 | 久久123| 国产免费一区二区三区四区五区 | 11孩岁女毛片 | 亚洲自拍激情 | 啪免费视频 | 久久久www免费人成人片 | 实拍澡堂美女洗澡av | 久久久久婷 | 欧美一级大片免费看 | 丝袜老师办公室里做好紧好爽 | 好吊日av | 网友自拍av | 一边摸一边做爽的视频17国产 | 男女日批 | 一区二区精品视频在线观看 | 天堂中文资源在线观看 | 性欧美一区二区 |