调用相册,调用音乐等(上一遍已经介绍了)。这是怎么实现的呢?其实就是ContentProvider
的功劳。系统封装好了ContentProvider
,而我们只需要调用就行。
而现在我们需要自己对应用建立ContentProvider
,以供别的应用访问。
结合实例:应用A要访问应用B 的数据库。
1:新建ContentProvider
1:new--->Other--->Content Provider
,新建时:URI Authorities
代表主机名,组成建议这样的:包名+自定义名。
新建完成后系统会重写多个方法,接下来我们需要做的就是对这些方法做具体的实现。
2:实现方法:
实现以下方法,前提需要实现了SQLiteOpenHelper
等创建数据库的操作,具体可参我的一篇文章(下面的例子也就是基于这篇文章里所创建的数据库):已创建的数据库
直接上代码:
假设应用为 A :
public class MyContentProvider extends ContentProvider {
private SQLiteUtil sqLiteUtil;
//根据uri匹配
private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
static{
//可有多个主机名,以便访问多个表
MATCHER.addURI("com.index.test.sqlitetest.conp","user_info",1);//查询全表数据
MATCHER.addURI("com.index.test.sqlitetest.conp","user_info/#",2);//根据唯一标识符查询
}
public MyContentProvider() {
}
@Override
public String getType(Uri uri) {
//系统回调,该方法会区分查询是全表查询还是单条数据查询,写法固定
switch (MATCHER.match(uri)){
case 1:
return "vnd.android.cursor.dir/user_info";//必须以vnd开头
case 2:
return