Android ContentProvider 查询另一个应用程序的数据

这里只针对初学者,按照每一步的步骤来就可以带你轻松学会内容提供最。

1.先创建一个数据库工程应用CreateSQL。

Android ContentProvider 查询另一个应用程序的数据_第1张图片

2.在CreateSQL项目中定义一个MyOpenHelper类继承SQLiteOpenHelper,然后因为父类没有无参构造所以需要一个父类发构造方法。

public MyOpenHelper(Context context) {
/**
  * name 数据库的名字 
  * factory 游标工厂 
  * version  版本
  */
super(context, "content.db", null, 1);
}

并且重写两个方法

/**
* 当数据库第一次 创建的时候调用 那么这个方法特别适合做 表结构的初始化 

*/
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table info(_id integer primary key autoincrement,name varchar(20),age varchar(20))");
db.execSQL("insert into info(name,age) values(?,?)", new String[]{"张三","20"});
db.execSQL("insert into info(name,age) values(?,?)", new String[]{"李四","19"});
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

3.在CreateSQL项目中的MainActivity测试一下创建数据库成功没有。

Android ContentProvider 查询另一个应用程序的数据_第2张图片

如果打印出下面的数据就表示成功了。


4.然后在创建一个读数数据库应用ReadSQL项目。

Android ContentProvider 查询另一个应用程序的数据_第3张图片

5.在ReadSQL项目中的布局activity_main里面写4个按钮分别是crud

6.然后去CrateSQL项目里面建一个MyContentProvider类为内容提供者并继承ContentProvider重写6个方法

7.在CrateSQL项目的清单文件配置内容提供者

Android ContentProvider 查询另一个应用程序的数据_第4张图片
 

8.定一个一个uri路径匹配器

private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);


9.创建一个静态代码块 在这个里面添加 uri  

private static final int QUERYSUCESS = 0; 

Android ContentProvider 查询另一个应用程序的数据_第5张图片

10.初始化 myopenHelpler 对象    就可以获取到sqlitedatabases对象 我们就可以操作数据库

Android ContentProvider 查询另一个应用程序的数据_第6张图片

11.按照我们定义的规则,暴露我想要暴露的方法

Android ContentProvider 查询另一个应用程序的数据_第7张图片

13.如果你发现如下日志,就说明内容提供者写的没有问题

02-07 15:28:08.987: I/ActivityThread(2589): Pub com.oyyp.provider: com.oyyp.createsql.MyContentProvider

13.然后去ReadSQL工程MainActivity里面写点击事件(注意这个有一个小细节要添加一个协议 content:)

只要是通过内容提供者暴露出来的数据,其他应用访问的方式都是一样的,就是通过内容解析者

Android ContentProvider 查询另一个应用程序的数据_第8张图片

14.然后运行点击查询就会打印


其他的增删改都是一样的,只要把方法暴露出来就是可以了。








你可能感兴趣的:(Android)