android的内容提供者
2015-08-01 14:07
603 查看
在Android中我们有时需要操作一些我们可能没有权限去操作的内容,这时候就需要一个内容提供者为我们提供一个接口,通过此接口我们就可以对我们想操作的数据进行操作(此处是对数据库的操作其他的不知道还有没有这样的情况)。
在创建内容提供者的时候我们需要建立一个自己的类 他继承contentprovider类 实现它的方法 这就是创建了一个内容提供者。例:
第二步:在AndroidManifest.xml文件中添加内容提供者的标签:
第三步:可以创建一个按钮的点击事件用来测试:
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();
}完结!
在创建内容提供者的时候我们需要建立一个自己的类 他继承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();
}完结!
相关文章推荐
- 我的Android进阶之旅------>ListView中android:cacheColorHint,android:listSelector属性作用 .
- Android学习笔记之Context
- android 时钟开发
- Android中的抖动解码(inDither)
- Android Api Demos登顶之路(十三)Presentation With Media Router
- Android上拉查看详情实现
- android shape的使用
- Android开发中相见恨晚的方法、类或接口
- android 底部tabview模板
- Android带索引联系人列表
- 6款值得推荐的Android开发框架
- Android-1.按钮单击的4种监听方式(电话拨号器)
- Android Activity之间数据传递 Parcelable和Serializable接口详解
- Android开发笔记---service的绑定及如何获得service实例
- [Android]egit取消文件版本控制
- android studio MissingTranslation 3种解决方式
- ThreadPoolExecutor使用介绍
- 【安卓开发】安卓实用demo合集,有了这些一个项目轻松搞定
- android checkbox 未选中状态 已选中状态 替换成自己的图片
- Android存储之SQLiteDatbase