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

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

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.然后运行点击查询就会打印


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








  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值