Android ContentProvider

这篇具有很好参考价值的文章主要介绍了Android ContentProvider。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是ContentProvider(内容提供者)
ContentProvider 是应用程序之间共享数据的接口,是android提供的一种数据共享方法。
ContentProvider 可以指定需要共享的数据,其他应用程序可以在不知道数据来源、路径的情况下,对共享数据进行CUDR(增删改查)操作。在Android系统中,许多内置的应用数据是通过ContentProvider提供给用户使用的,例如通讯录、视频、音频、图片文件等。

二、ContentProvider 类
ContentProvider是在android.content.ContentProvider 包下的一个抽象类,继承该类需要实现以下方法。
onCreate() 初始化内容提供者程序
query(Uri, String[], String, String[], String) 查询
insert(Uri, ContentValuse) 插入
update(Uri, ContentValues, String, String[]) 更新
delete(Uri, String, String[]) 删除
getType(Uri) 获取数据类型

三、Uri 是什么
Uri 是统一资源标识符(Uniform Resource Identifier),用于标识某一个互联网资源名称的字符。该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。Uri包括确定的语法和相关协议的方案所定义。(摘录自百度百科)
Uri 例子:(Android URI简介 http://blog.csdn.net/sunny09290/article/details/7514963)
所有联系人的Uri: content://contacts/people
Uri 由三部分组成,主机名、标志符、相对URI。

*URI、URL、URN的区别?(参考自http://web.jobbole.com/83452/)
URI 是统一资源标识符
URL 是统一资源定位
URN 是统一资源名称
URL和URN 都是URI的子集。URL不包括资源的位置,URN 不包括资源的访问方式

四、ContentProvider 和 Uri
每个ContentProvider都有一个公共的Uri,这个Uri用于表示这个ContentProvider所提供的数据。Android所提供的ContentProvider都存放在android.provider包当中。

五、Android中的Uri
某个联系人的Uri: content://contacts/people/5
content:///<data_path>/(/<property)
Android中的Uri 由三部分组成
content:// 标识前缀,用来说明一个ContentProvider 来控制这些数据,无法改变
Uri标识,用于唯一标识这个ContentProvider ,外部调用者可以通过这个标识来找到它。一般定义为包名.类名的形式。
<data_path> 路径。操作数据库中表的名字,可以自己定义。
记录位置。/5 是要获取的的记录的ID,如果存在会返回对应数据,如果没有会返回全部,另外还可以添加字段/5/name如

六、Uri帮助类。UriMatcher ContentUris

七、ContentResolver操作ContentProvider
当外部应用需要对ContentProvider中的数据进行CUDR操作时,可以使用ContentResolver 类来完成,在Activity中可以通过getConatentResolver()来获取该对象。
ContentResolver cr = getContentResolver();
ContentResolver 提供了与ContentProvider类相同签名的四个方法。
public Uri insert(Uri uri, ContentValues values)
public int delete(Uri uri, String selection, String[], selectionArgs)
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

八、ContentResolver使用

九、使用ContentResolver监听ContentProvider中的数据变化
在自定义中的ContentProvider中可以调用ContentResolver.notifyChange(uri, null)方法。
public class PersonContentProvider extends ContentProvider {
public Uri insert(Uri uri, ContentValues values) {
db.insert(“person”, “personid”, values);
getContext().getContentResolver().notifyChange(uri, null);
}
}

如果ContentProvider的访问者需要得到数据变化通知,必须使用ContentObserver对数据进行监听,当监听到数据变化时,系统会调用ContentObserver的onChange()方法。
getContentResolver().registerContentObserver(Uri.parse(“content://com.ljq.providers.personprovider/person”),
true, new PersonObserver(new Handler()));
public class PersonObserver extends ContentObserver{
public PersonObserver(Handler handler) {
super(handler);
}
public void onChange(boolean selfChange) {
//此处可以进行相应的业务处理
}
}

十、ContentProvider的使用。
第一步:在AndroidManifest.xml 中application节点下注册ContenProvider.

第二步:继承ContentProvider类并实现其抽象方法。文章来源地址https://www.toymoban.com/news/detail-400718.html

到了这里,关于Android ContentProvider的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Android] Android文件系统中存储的内容有哪些?

    如果不考虑厂商造成的差异,Android 标准的分区还是能构成一个定义良好的文件系统层的。 纵观全文,虽然没有太多技术性和需要逻辑推理的内容,但是看完之后,相信对于Android文件系统会有更深入的理解。例如我们Android开发的时候经常需要使用到的data/data目录,例如进入

    2024年01月25日
    浏览(28)
  • Android 读取Txt文件内容

    View Code 一个获取InputStream中字符串内容的方法:传入一个InputStream,返回其中的文本内容。 View Code 以gbk编码读取内容,不同的文本文件可能编码不同,如果出现乱码,可能需要调整编码。 手机测试有安卓版本限制、生产厂家限制,如:某OS

    2024年02月17日
    浏览(35)
  • Android系统安全权限相关内容

    Android手机把权限从低到高分成三大类: 1、第三方应用权限(App可以在用户授权下访问某些具体的操作) 2、Android手机用户普通权限(手机使用者可以操作Android系统的日常应用) 3、Android手机的Root权限(超级用户权限,可以控制Android系统的运转) 1. 更新操作系统和应用程序

    2024年03月23日
    浏览(29)
  • 游戏逆向_Android读写游戏内容

    一、背景 Android外挂的实现,需要涉及相应游戏内容的读写。读写的游戏内容包括代码和数据 针对不同的读写对象,通用的步骤就是寻找对象地址(位置)→获取相应权限→读写。下面将更详细介绍下相关实现。 二、实现方式 实现方式可以分为两大类:注入式和非注入式。

    2023年04月13日
    浏览(33)
  • 安全运维是做什么的,主要工作内容是什么

    安全运维,简称SecOps,是一种集成安全措施和流程到信息技术运维的实践。它的目的是确保在日常运维活动中,如网络管理、系统维护、软件更新等,均考虑并融入安全策略。安全运维的核心是实现安全和运维团队的密切协作,以快速识别和应对安全威胁,同时确保系统和服

    2024年02月04日
    浏览(31)
  • 什么叫做信息安全?包含哪些内容?与网络安全有什么区别?

    生活中我们经常会听到要保障自己的或者企业的信息安全。那到底什么是信息安全呢?信息安全包含哪些内容?与网络安全又有什么区别呢?今天我们就一起来详细了解一下。 什么叫做信息安全? 信息安全定义如下:为数据处理系统建立和采用的技术、管理上的安全保护,

    2024年02月05日
    浏览(42)
  • Android 之 监听 EditText 的内容变化

    在前面我们已经学过EditText控件了,本节来说下如何监听输入框的内容变化! 这个再实际开发中非常实用,另外,附带着说下如何实现EditText的密码可见与不可见! 由题可知,是基于监听的事件处理机制,好像前面的点击事件是OnClickListener,文本内容 变化的监听器则是:Te

    2024年02月12日
    浏览(29)
  • 桥梁安全监测方法和内容是什么?

    桥梁安全监测方法和内容是什么?桥梁监测是保障桥梁安全和稳定的重要手段。随着科技的进步,桥梁监测技术和设备不断完善,监测内容也越来越全面。本文万宾科技小编将为大家介绍桥梁安全监测的方法和内容,以期帮助大家更好地了解这一领域。 桥梁安全监测的方法

    2024年02月11日
    浏览(37)
  • 大数据是什么?需要学习哪些内容

    现在大数据发展的如火如荼,也有不少小伙伴对于什么是大数据比较感兴趣,那么大数据在比较官方的定义是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率

    2024年02月09日
    浏览(38)
  • 安全风险识别是什么?主要内容有哪些?

    安全风险识别是什么?在当今互联网时代,网络安全问题愈加突出。企业和个人的信息安全面临着越来越多的风险,因此,安全风险识别成为了一个非常重要的问题。本文主要分享安全风险识别是什么?主要内容有哪些? 安全风险识别是什么? 安全风险识别是指通过对企业

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包