Android中每一个应用的的数据都是私有的数据(Sqlite、SharedPrefcences、data里的数据),别的应用没有权限直接访问,但有时候有需要把数据共享给另外的应用去访问,可以使用ContentProvider来将本应用的数据共享给其他应用来访问。
要实现ContentProvider只需要我们的类继承ContentProvider类即可。
需在manifest文件中配置provider,需要额外配置android:authorities属性,累死网址中的主机地址,一般此属性配置为应用的包名.provider:
<provider android:name=".MyProvider" android:authorities="com.xxx.app.provider" />
在我们的ContentProvider中使用UriMatcher来匹配访问规则
private static final UriMatcher matcher = new UriMatcher(1);
private static final String AUTHORITY = "com.huaying.app.provider";
@Override
public boolean onCreate() {
System.out.println("MyProvider.oncreante");
matcher.addURI(AUTHORITY, "tablea", 1);
return false;
}
并需要在update、delete、insert、query方法中去匹配Url执行相应的操作。
创建好ContentProvider之后其他应用就可以通过ContentResolver来访问ContentProvider了:
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://com.xxx.app.provider/tablea");
resolver.query(uri, null, null, null, null);