android的内容提供者

来源:互联网 发布:windows vista界面 编辑:程序博客网 时间:2024/05/29 15:42

在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 查找路径@Overridepublic int delete(Uri arg0, String arg1, String[] arg2) {// TODO Auto-generated method stubreturn 0;}@Overridepublic String getType(Uri arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic Uri insert(Uri arg0, ContentValues arg1) {// TODO Auto-generated method stubreturn null;}@Overridepublic boolean onCreate() {// TODO Auto-generated method stubhelper = new PersonSqliteOpenHelper(getContext());return false;}@Overridepublic Cursor query(Uri uri, String[] columns, String selection, String[] selectionArgs,String orderBy) {// TODO Auto-generated method stubSQLiteDatabase 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("路径匹配不正确");}}@Overridepublic int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {// TODO Auto-generated method stubreturn 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();        }
完结!


0 0
原创粉丝点击