demo
public class PersonContentProvider extends ContentProvider {
private static final UriMatcher matcher;
private static final String AUTHORITY = "com.hhx.personProvider.PersonContentProvider";
private static final int PERSON_INSERT_CODE = 0; // 插入
private static final int PERSON_Delete_CODE = 1; // 删除
private static final int PERSON_QUERYALL_CODE = 2; // 查询所有
private static final int PERSON_UPDATE_CODE = 3; // 修改
private static final int PERSON_QUERY_CODE = 4; // 查询单条
SQLiteHelper helper;
static {
matcher = new UriMatcher(UriMatcher.NO_MATCH);
matcher.addURI(AUTHORITY, "person/insert", PERSON_INSERT_CODE); // 插入
matcher.addURI(AUTHORITY, "person/delete", PERSON_Delete_CODE); // 删除
matcher.addURI(AUTHORITY, "person/update", PERSON_UPDATE_CODE); // 修改
matcher.addURI(AUTHORITY, "person/queryall", PERSON_QUERYALL_CODE); // 查询所有
matcher.addURI(AUTHORITY, "person/query/#", PERSON_QUERY_CODE); // 查询单条
}
@Override
public boolean onCreate() {
helper = new SQLiteHelper(getContext());
return false;
}
@Override
public Cursor query(Uri uri, String[] columns, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteDatabase db = helper.getReadableDatabase();
switch (matcher.match(uri)) {
case PERSON_QUERYALL_CODE: // 如果是查询所有
if (db.isOpen()) {
return db.query("Person", columns, selection, selectionArgs,
null, null, sortOrder);
}
return null;
case PERSON_QUERY_CODE: // 如果是查询单条
long id = ContentUris.parseId(uri);
if (db.isOpen()) {
return db.query("Person", columns, "id=?", new String[] { id
+ "" }, null, null, sortOrder);
}
return null;
default:
return null;
}
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = helper.getWritableDatabase();
int code = matcher.match(uri);
switch (code) {
case PERSON_INSERT_CODE:
if (db.isOpen()) {
long id = db.insert("Person", null, values);
return ContentUris.withAppendedId(uri, id);
}
default:
throw new IllegalArgumentException("参数参入错误");
}
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
SQLiteDatabase db = helper.getWritableDatabase();
int code = matcher.match(uri);
switch (code) {
case PERSON_Delete_CODE:
if (db.isOpen()) {
int id = db.delete("Person", selection, selectionArgs);
return id;
}
default:
throw new IllegalArgumentException("Uri参入错误");
}
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
SQLiteDatabase db = helper.getWritableDatabase();
int code = matcher.match(uri);
switch (code) {
case PERSON_Delete_CODE:
if (db.isOpen()) {
int id = db.update("Person", values, selection, selectionArgs);
return id;
}
default:
throw new IllegalArgumentException("参数参入错误");
}
}
}
清单文件中配置
<provider android:name="com.hhx.personProvider.PersonContentProvider" //与主机名相同即可
android:authorities="com.hhx.personProvider.PersonContentProvider" //表示主机名
android:readPermission="com.hhx.personProvider.PersonContentProvider.read"> //访问权限 可以不要
</provider>
调用
ContentResolver contentResolver = getContentResolver();
contentResolver.query(uri, projection, selection, selectionArgs, sortOrder);
contentResolver.insert(url, values);