ContentProvider就是一个内容提供者,向一个Activity一样,需要在Manifest中声明,声明之后就可以用ContentResolver通过被定义好的Uri来访问。
注意,在代码中:
1、必须声明此ContentProvider的唯一标识符AUTHORITY
2、定义静态变量CODE,标识被访问的数据库中的资源(表)
3、添加Uri,算是提供给用户的访问接口,用户就通过Uri来访问ContentProvider
在Manifest中:
1、需要声明provider
2、需要指定唯一标识AUTHORITY
3、需要声明被访问的权限,并在application标签上声明
4、android:exported="true",允许被外部访问
//声明MyContentProvider的唯一标识符
public static final String AUTHORITY= "com.fqianfeng.day26_test_contentprovider.mytest";
//声明数据库的资源(表)定义CODE标识
public static final int CODE_NEWS =0x1;
private static UriMatcheruriMatcher;
static{
uriMatcher = newUriMatcher(UriMatcher.NO_MATCH);
//生成Uri:content://com.fqianfeng.day26_test_contentprovidercontentpr
ovider.mytest/tb_news
uriMatcher.addURI(AUTHORITY,"tb_news", CODE_NEWS);
}
之后再写自己的方法,加载数据到数据库
manifest.xml中的部分代码:
<!-- 声明访问该组件的权限 -->
<permission android:name="com.fqianfeng.day25_contentprovider.contentprovider.READ_WRITE" />
<!-- 使用该组件的权限 -->
<uses-permission android:name="com.fqianfeng.day25_contentprovider.contentprovider.READ_WRITE"/>
<permission android:name="com.fqianfeng.day25_contentprovider.contentprovider.READ_WRITE" />
<!-- 使用该组件的权限 -->
<uses-permission android:name="com.fqianfeng.day25_contentprovider.contentprovider.READ_WRITE"/>
<!-- 注册ContentProvider组件
android:authorities:声明该组件的唯一标识
android:permission:声明该组件的权限
android:exported="true":声明该组件可以被外界应用访问
-->
<provider
android:name="com.fqianfeng.day25_contentprovider.contentprovider.UserContentProvider"
android:authorities="com.fqianfeng.day25_contentprovider.users"
android:permission="com.fqianfeng.day25_contentprovider.contentprovider.READ_WRITE"
android:exported="true"
/>
android:authorities:声明该组件的唯一标识
android:permission:声明该组件的权限
android:exported="true":声明该组件可以被外界应用访问
-->
<provider
android:name="com.fqianfeng.day25_contentprovider.contentprovider.UserContentProvider"
android:authorities="com.fqianfeng.day25_contentprovider.users"
android:permission="com.fqianfeng.day25_contentprovider.contentprovider.READ_WRITE"
android:exported="true"
/>