您的位置:首页 > 移动开发 > Android开发

《第一行代码Android》学习日记15

2015-11-16 19:37 459 查看
跨程序共享数据,探究内容提供器

1.访问其他程序中的数据——读取系统联系人

在模拟器的电话薄里面添加两个联系人



新建ContactsTest项目,修改activity_main.xml代码,放置ListView控件,来显示读取出来的联系人信息。



修改MainActivity代码,在onCreate()方法中,首先获得ListView控件的实例,给它设置好适配器,然后调用readContacts()方法。



在AndroidManifest.xml文件中,加入android.permission.READ_CONTACTS权限,通过程序访问系统联系人数据。



运行程序



2.创建内容提供器

实现跨程序数据共享

在DatabaseTest项目中添加DatabaseProvider类











在AndroidManifest.xml文件中对内容提供器进行注册。在其中我们使用标签对DatabaseProvider内容提供器注册,在android:name属性中指定了该类的全名,在android:authorities属性中指定了内容提供器的权限,通过android:exported属性指定了这个内容提供器是可以被其他应用程序访问的。此时,DataTest这个项目拥有跨程序共享数据的功能了。



新建项目DatabaseTest2,通过这个程序去访问DatabaseTest中的数据。

修改activity_main.xml代码,在布局文件中放置四个按钮,用于添加、查询、修改和删除数据。



修改MainActivity中的代码,在四个按钮的点击事件里分别处理了增删改查的逻辑。添加数据的时候,首先调用Uri.parse()方法将一个内容URI解析成uri对象,然后将要添加的数据都存放到ContentValues对象中,接着调用ContentResolver的insert()方法执行添加操作。注意insert()方法会返回一个Uri对象,这个对象中包含了新数据的id,我们通过getPathSegments()方法将这个id 取出。查询数据的时候,调用Uri.parse()方法将一个内容URI解析成Uri对象,调用ContentResolver的query()方法查询数据,将查询结果存放在Cursor对象中,之后对其遍历取出查询结果并打印。更新数据的时候,先将内容URI解析成Uri对象,将想要更新的数据放到ContentValues对象中,调用ContentResolver的update()方法执行更新操作。在删除数据的时候,用同样的方法解析一个以ID结尾的内容URI,然后调用ContentResolver的delete()方法执行删除操作。







运行程序



点击Add To Book按钮,此时数据已经添加到DatabaseTest程序的数据库中了,我们通过点击Query From Book按钮,在打印日志中查看。



点击Update Book按钮来更新数据,再点击Query From Book按钮进行检查。



再点击Delete From Book按钮删除数据,此时再点击一下Query From Book按钮就查询不到数据了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: