话说 在实际工作中从来没有用过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);
}
@Override
public boolean onCreate() {
dao = new GuardDao(getContext());
return false;
}
/**
* 只做测试用,真正需要操作的时候需要吧从数据库的cursor返回
*/
@Override
public 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;
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
@Override
public 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;
}
@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 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);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE user (_id integer primary key autoincrement,key varchar(10), keyword varchar(30))");
}
@Override
public 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();
}
}
}