首页 > 系统 > Android > 正文

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

2019-11-09 17:29:54
字体:
来源:转载
供稿:网友

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

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

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

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

并且重写两个方法

/*** 当数据库第一次 创建的时候调用 那么这个方法特别适合做 表结构的初始化 * */@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb.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"});}@Overridepublic 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.然后运行点击查询就会打印

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表