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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ContactsProvider的使用

發布時間:2023/12/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ContactsProvider的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個東西就是Android用來共享數據的,沒啥太多的東西,我也只會用,簡單的了解了下原理跟使用

先上個代碼

public class ContactsProvider extends ContentProvider {//主機地址 當前類的完整路徑public static final String AUTHORITIES = "com.yide.yide.provider.ContactsProvider";//ContentProvider.class.getCanonicalName();//地址匹配對象static UriMatcher mUriMatcher;public static final int CONTACT = 1;//對應聯系人表的uri常量AUTHORITIESpublic static Uri URI_CONTACT = Uri.parse("content://"+AUTHORITIES+"/contact");static {mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);//添加一個匹配的規則mUriMatcher.addURI(AUTHORITIES,"/contact",CONTACT);}private ContactOpenHelper mHelper;@Overridepublic boolean onCreate() {mHelper = new ContactOpenHelper(getContext()); // if (mHelper != null){ // return true; // } // return false;return true;}@Nullable@Overridepublic String getType(@NonNull Uri uri) {return null;}@Nullable@Overridepublic Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {//數據存到數據庫 創建db文件 創建表int code = mUriMatcher.match(uri);switch (code){case CONTACT:SQLiteDatabase db = mHelper.getWritableDatabase(); // mHelper.onUpgrade(db,1,2); // db = mHelper.getWritableDatabase();long id = db.insert(ContactOpenHelper.T_CONTACT, "", values);if (id > 0 ){System.out.println("----------ContanctProvider 添加成功");//拼接最新uriuri = ContentUris.withAppendedId(uri,id);}break;default:break;}return uri;}@Overridepublic int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {int code = mUriMatcher.match(uri);int deleteCount = 0;switch (code){case CONTACT:SQLiteDatabase db = mHelper.getWritableDatabase();deleteCount = db.delete(ContactOpenHelper.T_CONTACT, selection, selectionArgs);if (deleteCount > 0){System.out.println("----------ContanctProvider 刪除成功");}break;default:break;}return deleteCount;}@Overridepublic int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {int updateCount = 0;int code = mUriMatcher.match(uri);switch (code){case CONTACT:SQLiteDatabase db = mHelper.getWritableDatabase();updateCount = db.update(ContactOpenHelper.T_CONTACT, values, selection, selectionArgs);if (updateCount >0){System.out.println("----------ContanctProvider 更新成功");}break;default:break;}return updateCount;}@Nullable@Overridepublic Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {Cursor query = null;int code = mUriMatcher.match(uri);switch (code){case CONTACT:SQLiteDatabase db = mHelper.getWritableDatabase();query = db.query(ContactOpenHelper.T_CONTACT, projection, selection, selectionArgs, null, null, sortOrder);System.out.println("----------ContanctProvider 查詢成功");break;default:break;}return query;} }

一般用到這個類都會需要一個extends SQLiteOpenHelper這個東西,就是創建數據庫的,一般通過上邊那個類(ContactsProvider)來操作這個東西

代碼

public class ContactOpenHelper extends SQLiteOpenHelper {public static final String T_CONTACT = "t_contact";/*** 數據庫版本*/private static final int DATABASE_VERSION = 1;/*** 數據庫名稱*/private static final String DATABASE_NAME = "con.db";public class ContactTable implements BaseColumns{//默認添加字段信息(一列)public static final String _ID = "_id";//賬號public static final String ACCOUNT = "account";//賬號public static final String NICKNAME = "nickname";//昵稱public static final String HEADIMAGE = "headimage";//頭像public static final String PINYIN = "pinyin";//賬號拼音}public ContactOpenHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Override //創建數據庫調用這個類public void onCreate(SQLiteDatabase db) {//創建數據表String sql =("create table if not exists "+T_CONTACT+"" +"("+ContactTable._ID+" integer primary key autoincrement," +""+ContactTable.ACCOUNT+" text not null,"+ContactTable.NICKNAME+" text not null," +""+ContactTable.HEADIMAGE+" text not null,"+ContactTable.PINYIN+" text not null)");//插入數據db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} }

但這這個數據庫的創建,我被坑的莫夢奇妙,直接就是創建不了,所以后續的操作就做不了,也就是說,對這個數據庫中的表進行插入的時候,他不會報錯,但是進行其他操作的話就會報錯,而且,根本就沒有你創建的表,更沒有數據庫,后來我改了一下數據庫名稱,就沒事了 ??????然后就沒事了???不知道為啥,可能是因為我在測試的時候,數據庫名稱沒有加.db,之后還有的之歌名稱,只不過加上了.db的原因吧,不曉得不曉得。。。

哦,對了,這個ContentProvider的使用,還需要在清單文件里進行provider一下,這里邊有很多參數,隨便搜一下就有,我就不說了,OK就這樣記錄一下,后期有機會再補充詳細的。

<providerandroid:name="com.provider.ContactsProvider"android:authorities="com.provider.ContactsProvider"/>```

總結

以上是生活随笔為你收集整理的ContactsProvider的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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