您的位置:首页 > 移动开发 > Android开发

android的内容提供者

2015-08-01 14:07 603 查看
在Android中我们有时需要操作一些我们可能没有权限去操作的内容,这时候就需要一个内容提供者为我们提供一个接口,通过此接口我们就可以对我们想操作的数据进行操作(此处是对数据库的操作其他的不知道还有没有这样的情况)。

在创建内容提供者的时候我们需要建立一个自己的类 他继承contentprovider类 实现它的方法 这就是创建了一个内容提供者。例:

public class PersonDbProvider extends ContentProvider {

//uri匹配
private static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);

private static final int INSERT = 1;
private static final int DELETE = 2;
private static final int UPDATE = 3;
private static final int QUERY = 4;
private PersonSqliteOpenHelper helper ;

//添加一组匹配规则
static{
matcher.addURI("com.jit.db.personprovider", "insert", INSERT);
matcher.addURI("com.jit.db.personprovider", "delete", DELETE);
matcher.addURI("com.jit.db.personprovider", "update", UPDATE);
matcher.addURI("com.jit.db.personprovider", "query", QUERY);
}

// 路径为  content://com.jit.db.personprovider/insert 添加路径
// 路径为  content://com.jit.db.personprovider/delete 删除路径
// 路径为  content://com.jit.db.personprovider/update 更新路径
// 路径为  content://com.jit.db.personprovider/query 查找路径

@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
// TODO Auto-generated method stub
return 0;
}

@Override
public String getType(Uri arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public Uri insert(Uri arg0, ContentValues arg1) {
// TODO Auto-generated method stub
return null;
}

@Override
public boolean onCreate() {
// TODO Auto-generated method stub
helper = new PersonSqliteOpenHelper(getContext());
return false;
}

@Override
public Cursor query(Uri uri, String[] columns, String selection, String[] selectionArgs,
String orderBy) {
// TODO Auto-generated method stub
SQLiteDatabase db = helper.getReadableDatabase();
if(matcher.match(uri) == QUERY){
Cursor cursor = db.query("person", columns, selection, selectionArgs, null, null, orderBy);
return cursor;
}else{
throw new IllegalArgumentException("路径匹配不正确");
}
}

@Override
public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
// TODO Auto-generated method stub
return 0;
}

}

第二步:在AndroidManifest.xml文件中添加内容提供者的标签:

<provider
android:name="com.jit.db.PersonDbProvider"
android:authorities="com.jit.db.personprovider">

</provider>

第三步:可以创建一个按钮的点击事件用来测试:

public void onclick(View v){
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://com.jit.db.personprovider/query");
Cursor cursor = resolver.query(uri, null, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
int id = cursor.getInt(cursor.getColumnIndex("id"));
String number = cursor.getString(cursor.getColumnIndex("number"));
System.out.println("name:"+name+" id:"+id+" number:"+number);
}
cursor.close();

}完结!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: