移动开发技术作业三:使用Contentprovider实现数据共享

本文详细介绍了如何使用Android的ContentProvider组件来实现跨应用数据共享。通过创建自定义Provider并在另一应用中使用ContentResolver进行数据交互,实现了不同应用程序间的数据通信。在实践中,遇到并解决了如闪退等问题,加深了对ContentProvider工作原理的理解。
摘要由CSDN通过智能技术生成

一、实现要求:

1、contentprovider是安卓四大组件之一,请使用其方法类进行数据获取;

2、请自建一个provider,然后在另一个app中使用resolver调用这个provider。        

二、实现过程:

①Myresolver 数据接收方

1.首先New一个Empty Activity项目,并命名为Myresolver.然后在activity_main.xml中插入Textview和Button控件.

              

2.在Myresolver-MainActivity中,首先使用ContentResolver创建resolver对象,然后设置Button的点击函数,在点击函数中使用resolver对象,向Uri资源地址对应的空间的数据表中,插入values数据值;

                

此处是向txy.provider2项目的数据库的数据表student中插入values数值.

②provider 数据发放方

1.新建一个provider项目, 然后将以前项目中的MyDBHelper.java文件粘贴到新的文件夹中,利用该文件可以进行数据库连接,并从新的文件夹复制该文件,粘贴到provider项目中.

                              

2.执行New->Other->Content Provider,命名为MyContentProvider,然后设置URI Authorities属性为txy.provider2,在该项目的注册文件中可以对应查询到该信息,并且在MyContentProvider中可以发现有一系列进行增删改查操作的函数,与reslover对应.

              

3.在provider中New一个MyDAO.java类,目的是进行对数据表的Insert动作.首先创建MyDAO的构造函数,然后在构造函数中创建数据库连接对象,注意需要在MainAcitivity中创建MyDAO类的对象myDAO,然后将this指针传到MyDAO类中.

4.在MyDAO.java类中新增DAOInsert()函数,表示向uri资源对应的数据表中的某一行rowId新增数据,然后修改uri的值为inserturi,并通知resolver修改成功,最后返回Uri类型的变量inserturi.

5. 在MyContentProvider.java的onCreate()函数中增加对myDAO的定义和初始化,并且在inset()函数的返回值中添加对MyDAO.java中DAOInsert()函数的插入动作. 

三、实现结果:

1.首先运行Myresolver项目,点击BUTTON按钮,运行成功,然后关闭Myresolver项目.

                                          

2.打开provider项目,点击运行,打开App Inspection即可在txyDB数据库的student表中看到从reslover发送过来的值,由此实现了数据被多个app所共享的目标.

 四、心得与总结:

①通过本次实验,我对于Contentprovider实现数据共享的机制有了进一步的理解,可以实现在app1进行点击插入的动作,然后在app2能够接收到相应的数据插入结果.实现过程主要分为两部分,先对Myresolver编写,它是数据的接收方,可以解析数据并对数据进行一系列crud操作,再对provider编写,它是数据的发送方.

②实验过程中也遇到了许多问题,比如在运行Myresolver时会发生闪退现象,解决方法是在注册文件中加入以下代码:(显示指定出数据发送方的package),再次运行则闪退解决.

<queries>
    <package android:name="com.example.provider"></package>
</queries>

③实验最大的心得就是,在面对复杂的编程问题时,学会将问题拆解,比如这里可以将整个数据共享过程拆解成发送方和接收方,然后分别根据他们所实现的功能编写相应的代码.编程过程中注意返回值的类型,语句对应的含义,比如实现了什么功能等等,多写多多思考.

gitee仓库源码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值