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

来源:互联网 发布:结婚证合成软件 编辑:程序博客网 时间:2024/06/08 10:13

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

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


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测试一下创建数据库成功没有。


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


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


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

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

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


 

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

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


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

private static final int QUERYSUCESS = 0; 


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


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


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

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

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

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


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


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








3 0
原创粉丝点击