《第一行代码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按钮就查询不到数据了。
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按钮就查询不到数据了。
相关文章推荐
- android开发规范及快捷键
- android开发规范
- 最新鲜最详细的Android SDK下载安装及配置教程
- android progressBar自下而上加载
- Android Design Support Library之FAB(Floating Action Button)
- Android应用内多进程分析和研究
- Android中的ListActivity
- Android-----Fragment抽取
- Android 实现QQ侧滑界面之实现
- Android:Service进程间相互通信: Messenger(系列4)
- Android布局
- ubuntu创建wifi热点(android可识别)
- android自定义之 5.0 风格progressBar
- Android 文件相关总结
- 说明一下这两天碰到的android环境的问题
- 关于android service的个人理解
- Android中常被利用的漏洞
- 命令行修改Android系统时间
- android 分辨率自适应
- Android数据库ORMlite框架