Android 四大组件之ContentProvider
本文由 Luzhuo 编写,转发请保留该信息.
原文: http://blog.csdn.net/Rozol/article/details/79606186
内容提供者 (提供数据给第三方应用访问)
四大组件(Activity / BroadcastReceiver / Service / ContentProvider)之一
四大组件均运行于主线程
使用
清单文件配置
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="me.luzhuo.contentproviderdemo"> <!-- 添加访问权限 --> <uses-permission android:name="luzhuo.me.read" /> <uses-permission android:name="luzhuo.me.write" /> <!-- 声明权限,只有声明才能识别 --> <permission android:name="aa.bb.cc.read"/> <permission android:name="aa.bb.cc.write"/> <application ...> <...> <!-- 内容提供者 --> <!-- authorities:主机名; readPermission:读权限; writePermission:写权限 --> <provider android:name=".PersonContentProvider" android:authorities="luzhuo.me.provider" android:readPermission="luzhuo.me.read" android:writePermission="luzhuo.me.write" > </provider> </application> </manifest>
编写 SQLiteOpenHelper 数据库帮助类 (略)
编写 ContentProvider 内容提供者
public class PersonContentProvider extends ContentProvider { public static final String AUTHORITY = "luzhuo.me.provider"; // 主机名 private static final int PRESON_INSERT_CODE = 0; //操作person表添加操作的uri匹配码 private static final int PRESON_DELETE_CODE = 1; private static final int PRESON_UPDATE_CODE = 2; private static final int PRESON_QUERY_ALL_CODE = 3; private static final int PRESON_QUERY_ITEM_CODE = 4; private static UriMatcher uriMatcher; private PersonSQLiteOpenHelper mOpenHelper; //person数据库帮助对象 /* URI content://luzhuo.me.provider/person/10 \------/ \-----------------/ \---/ \--/ scheme authority path ID scheme:声明一个ContentProvider控制这些数据 主机名/授权(Authoryty):定义那个ContentProvider提供这些数据 path路径:URI下的某个Item ID:定义Uri时使用#号占位符代替,使用时替换成对应的数字 content://luzhuo.me.provider/person/# #表示数据id (#代表任意数字) content://luzhuo.me.provider/person/* *来匹配任意文本 */ static{ uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); //不匹配返回的类型 //添加一些rui(分机号) // content://luzhuo.me.provider/person/insert uriMatcher.addURI(AUTHORITY, //authority 主机名 "person/insert", //path 分机号 PRESON_INSERT_CODE); //code 匹配码 //0 // content://luzhuo.me.provider/person/delete uriMatcher.addURI(AUTHORITY, "person/delete", PRESON_DELETE_CODE); //1 // content://luzhuo.me.provider/person/update uriMatcher.addURI(AUTHORITY, "person/update", PRESON_UPDATE_CODE); //2 // content://luzhuo.me.provider/person/queryAll uriMatcher.addURI(AUTHORITY, "person/queryAll", PRESON_QUERY_ALL_CODE); //3 // content://luzhuo.me.provider/person/query/# uriMatcher.addURI(AUTHORITY, "person/query/#", PRESON_QUERY_ITEM_CODE); //4 } @Override public boolean onCreate() { mOpenHelper = new PersonSQLiteOpenHelper(getContext()); return true; } @Nullable @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)