Android ContentProvider

来源:互联网 发布:淘宝怎么增加颜色分类 编辑:程序博客网 时间:2024/05/18 03:42

话说 在实际工作中从来没有用过cp 现在有个项目需要用到 现在实现了 把大体的内容贴出来 供参考

package com.su.appguardservice.db;import com.su.appguardservice.util.MLog;import android.app.DownloadManager.Query;import android.content.ContentProvider;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.net.Uri;public class GuardDaoProvider extends ContentProvider {private static final int INSERT = 10;private static final int QUERY = 11;private static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);private static Uri changeuri = Uri.parse("content://com.su.aguardprovider");private GuardDao dao;/** * 如果是content://com.su.aguardprovider/insert则matcher.match(uri) = 10; */static {matcher.addURI("com.su.aguardprovider", "insert", INSERT);matcher.addURI("com.su.aguardprovider", "query", QUERY);}@Overridepublic boolean onCreate() {dao = new GuardDao(getContext());return false;}/** * 只做测试用,真正需要操作的时候需要吧从数据库的cursor返回 */@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {int result = matcher.match(uri);MLog.e(result + "");if (result == QUERY) {MLog.e(dao.find());}return null;}@Overridepublic String getType(Uri uri) {// TODO Auto-generated method stubreturn null;}@Overridepublic Uri insert(Uri uri, ContentValues values) {int result = matcher.match(uri);if (result == INSERT) {MLog.e(result + "");String keycode = (String) values.get("keycode");dao.add(keycode);getContext().getContentResolver().notifyChange(changeuri, null);} else {throw new IllegalArgumentException("插入失败");}return null;}@Overridepublic int delete(Uri arg0, String arg1, String[] arg2) {// TODO Auto-generated method stubreturn 0;}@Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {// TODO Auto-generated method stubreturn 0;}}


访问比较简单了 在另一个程序中:

/** * 写入授权密码 *  * @param keycode */private void insert(String keycode) {ContentResolver contentResolver = this.getContentResolver();Uri insertUri = Uri.parse("content://com.su.aguardprovider/insert");ContentValues values = new ContentValues();values.put("keycode", keycode);contentResolver.insert(insertUri, values);}




cp肯定少不了dao和dbhelper

package com.su.appguardservice.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class GuardDBHelper extends SQLiteOpenHelper {public GuardDBHelper(Context context) {super(context, "guarddbhelper.db", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE user (_id integer primary key autoincrement,key varchar(10), keyword varchar(30))");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}

package com.su.appguardservice.db;import com.su.appguardservice.util.MLog;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class GuardDao {private GuardDBHelper dbHelper;public GuardDao(Context context) {dbHelper = new GuardDBHelper(context);}public String find() {String result = null;SQLiteDatabase db = dbHelper.getReadableDatabase();if (db.isOpen()) {Cursor cursor = db.rawQuery("select keyword from user where key='key'", null);if (cursor.moveToNext()) {result = cursor.getString(0);}cursor.close();db.close();}return result;}public void add(String packname) {SQLiteDatabase db = dbHelper.getWritableDatabase();if (db.isOpen()) {db.execSQL("delete from user where key='key'");db.execSQL("insert into user (key,keyword) values (?,?)",new Object[] { "key", packname });db.close();}}}


 

原创粉丝点击