文档章节

Android学习--11-内容提供器

ssnoodles
 ssnoodles
发布于 2016/09/28 10:57
字数 442
阅读 11
收藏 0

不同于文件和SharedPreferences存储中的两种全局读写操作,内容提供器可以选择只对哪一部分数据进行共享,防止数据不会泄露。

ContentResolver类

读取手机联系人

List<String> contactsList = new ArrayList<String>();
private void readContacts() {
Cursor cursor = null;
try {
// 查询联系人数据
cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, null, null, null);
while (cursor.moveToNext()) {
// 获取联系人姓名
String displayName = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
// 获取联系人手机号
String number = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
contactsList.add(displayName + "\n" + number);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}

使用了query()方法,传入uri参数。然后对Cursor对象进行遍历,最后关闭。

当然还需要相应的权限

<uses-permission android:name="android.permission.READ_CONTACTS" />

自定义内容提供器

就像写个接口一样,提供相应路径,访问我,就给你相应的数据。

extends ContentProvider

标准的URI写法:

content://com.example.app.provider/table1

*:表示匹配任意长度的任意字符 #:表示匹配任意长度的数字

content://com.example.app.provider/*

那么谁来实现匹配内容URI呢: UriMatcher

提供了一个addURI() 方法,接收三个参数: 权限、路径、自定义的代码

UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI("com.example.app.provider", "table1", 0);

获取 Uri 对象所对应的 MIME 类型,一个内容 URI 所对应的 MIME字符串主要由三部分组分

  1. 必须以 vnd 开头。
  2. 如果内容 URI 以路径结尾,则后接 android.cursor.dir/,如果内容 URI 以 id 结尾, 则后接 android.cursor.item/。
  3. 最后接上 vnd.<authority>.<path>。
vnd.android.cursor.dir/vnd.com.example.app.provider.table1

内容提供器在 AndroidManifest.xml 文件中注册

<provider
android:name="自定义内容提供器的全名"
android:authorities="包名.provider" >
</provider>

如何去访问自定义的内容提供器呢?

Uri uri = Uri.parse("content://com.example.app.provider/table1");
//查全部 ,到这一步就很熟悉了,遍历取出数据。
Cursor cursor = getContentResolver().query(uri, null, null,null, null);

© 著作权归作者所有

ssnoodles
粉丝 2
博文 31
码字总数 9574
作品 0
张家港
私信 提问
我想邀请你和我一起学Android

初衷 如果你也学习Android,那么你大概率会在博客上看过我的文章: 附:各大技术社区的个人链接 CSDN:blog.csdn.net/carson_ho 简书:www.jianshu.com/u/383970bef… 稀土掘金:juejin.im/u...

Carson_Ho
05/10
0
0
跨程序共享数据——Content Provider 之 运行时权限解析以及申请的实现

本模块共有四篇文章,参考郭神的《第一行代码》,对Content Provider的学习做一个详细的笔记,大家可以一起交流一下: 跨程序共享数据——Content Provider 之 运行时权限解析以及申请的实现...

凌川江雪
2018/08/27
0
0
在 Android 3.0 平台上创建和解析 XML

简介: Android 是最常用的智能手机平台,它在移动平板电脑上也能发挥作用。XML 是数据交换的标准媒介。您可以对标准 XML 解析、标准 XML 转换和 Android 使用相同的生成器、解析器和转换器 ...

IBMdW
2011/11/14
675
0
Android ***测试学习手册(三)Android 应用的逆向和审计

在本章中,我们将查看 Android 应用程序或 .apk 文件,并了解其不同的组件。 我们还将使用工具( 如 Apktool,dex2jar 和 jd-gui) 来逆向应用程序。 我们将进一步学习如何通过逆向和分析源代...

老鹰a
2018/06/29
0
0
Android 内容提供器---创建内容提供器(设计数据存储)

内容提供器是用结构化的格式来保存数据的接口。在你创建接口之前,你必须决定如何保存数据,你能够使用你喜欢的任何格式存储数据,然后设计读写数据所必须的接口。 以下是在Android平台中有效...

长平狐
2012/10/16
31
0

没有更多内容

加载失败,请刷新页面

加载更多

thinkcmf 渗透测试漏洞修复解决方案

近段时间发现很多APP程序用的是thinkcmf,此程序源码存在getshell漏洞,我们Sine安全紧急对此高危漏洞进行了分析和漏洞修复,攻击者可以通过构造特定的请求包get请求即可在远程服务器上执行任意...

网站安全
31分钟前
6
0
MySQL的IP地址与数字互转原理

一、inet_aton与inet_ntoa inet_aton是把ip地址转为数字的函数,记忆小技巧,inet表示网络相关,在c语言中a习惯性代表字符串,to就是转换的,n代表数字,aton就是字符串转数字,同理inet_nt...

trayvon
42分钟前
6
0
【翻译】全新16英寸MacBook Pro评测:开发人员的梦想成真

要问现在适合开发者用的笔记本,市面上还是有很多选择的,比如Dell的XPS系列,外星人系列(游戏也是杠杠滴),联想拯救者系列,还有形形色色的高配机型,价格也从几千到几万不等。 但是,笔吧...

Dimple91
43分钟前
8
0
IT兄弟连 HTML5教程 CSS3属性特效 CSS3分栏布局

CSS3中新出现的多列布局(multi-column)是传统HTML网页中块状布局模式的有力扩充。这种新语法能够让WEB开发人员轻松的让文本呈现多列显示。我们知道,当一行文字太长时,读者读起来就比较费劲...

老码农的一亩三分地
59分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部