android ContentProvider读取其他应用数据库
来源:互联网 发布:国家顶级域名 中文域名 编辑:程序博客网 时间:2024/06/10 06:20
android中,保存和读取数据数据的方式很多种,大致上有网络保存,内存记忆,文件保存和数据库保存。
而应用之间的数据库数据分享,读写,主要用到的便是ContentProvider.
为什么这么说呢? 如果能直接读取数据库文件的话会快很多,然而我们并没有直接读写数据库文件即****.db的权限,即便实在cmd命令下ls目录,也会直接提示
permission denied.
因为我们只能通过ContentProvider了。简单的分析下,使用的步骤大概分为下面几步:
1)获取得到需要读写数据库文件应用的相关信息:
信息需要有:1.数据库文件名字 2.数据库表名字 3.配置文件中是否暴露出authorities.4.是否exported为true
2)ContentResolver 和UriMatcher、Uri
ContentResolver 这类主要为了得到cursor,如此就可以得到我们想要得到的数据
UriMatcher主要是根据我们传递过去的uri来处理事物逻辑,比如根据uri来区分后续查询的不同的表、数据库文件等
Uri是为了拼接我们的请求类型 如Uri uri=Uri.parse("content://" + URI + "/" + requestType)
如此,就可以
//执行query方法返回一个结果集
Cursor cursor = cr.query(uri, null, null, null, null);
当然可以在方法之中添加自己索要筛选的条件。
当然,出错的地方还是会有的。比如cursor为空的情况,主要可能出自1.数据库名不对、2.配置文件与自己写的不符合等
下面来贴一下大致上的代码:
1.androidMainfest.xml
<provider android:name="com.**********" android:authorities="com.******** android:exported="true" android:multiprocess="false" />2.java
//取得ContentResolver对象ContentResolver cr = getContentResolver();//指定uri并指定操作哪个表Uri uri = Uri.parse("content://" + URI + "/" + requestType);//执行query方法返回一个结果集Cursor cursor = cr.query(uri, null, null, null, null);//遍历结果集,取出数据ArrayList<VodRecord> mVodRecordList = null;if (cursor != null && cursor.getCount() > 0) { mVodRecordList = new ArrayList<>(); cursor.moveToFirst(); for (int i = 0; i < cursor.getCount(); i++) { VodRecord record; if (isTopic) { record = RecordDataUtils.getTopicRecord(cursor); } else { record = RecordDataUtils.getVodRecord(cursor); } mVodRecordList.add(record); cursor.moveToNext(); } cursor.close();}
- android ContentProvider读取其他应用数据库
- ContentProvider 操作其他应用的数据库
- Android复习练习十二(自定义ContentProvider实现其他应用操作本应用SQLite数据库)
- Android读取其他应用的SharedPreferences
- (8)Launcher3客制化之ContentProvider内容提供者,实现其他应用修改数据库更新等操作
- Android中应用contentprovider来创建数据库的一些步骤:
- ContentProvider和其他应用共享数据
- Android ContentProvider应用
- Android-ContentProvider数据库操作
- Android数据库 contentprovider
- Android-ContentProvider数据库操作
- Android之数据库ContentProvider
- Android问题—读取其他应用的SharedPreferences
- Android对其他应用/data分区下文件的读取
- ContentProvider的URI配置及使用,实现数据库的跨应用读取
- Android 读取上一个应用的数据库
- android数据存储读取6:contentProvider的使用(提供自己应用的数据)
- Android入门学习笔记(二) SQLite数据库|ContentProvider|从Internet读取数据
- java注解详解(注解项目实战)
- 后台调用前台方法(能使用jquery的函数)
- JAVA实现随机无重复数字功能
- Tcl/tk string 几个常用
- Golang之旅1:从0到1
- android ContentProvider读取其他应用数据库
- 线性筛法 约数个数
- JMeter开发插件之一(JMeter开发Java Request Sampler测试mongodb)
- 结构较复杂的xml和json互转
- iOS访问通讯录
- Golang之旅2:工程结构
- 毕设的开始——我的爆炸之旅
- Ubuntu16.04 安装flash
- 利用ajax导出Excel文件