[android] 内容提供者简介
2023-02-18 15:47:14 时间
产生的原因是,当我们把数据存到数据库的时候,数据库的权限是私有的,把系统的短信应用中的数据库导出来,打开看到address字段是手机的号码,date字段是时间,type字段1,2代表发出去的短信和接受到的短信,body字段代表短信的数据。要想让别的应用程序访问自己数据库的数据,这时需要自己把数据给暴露出来。
新建一个类比如PersonProvider,先继承系统的ContentProvider类,这个类是android四大组件之一,暴露自己的私有数据,别的应用通过ContentResolver类来获取数据。组件在应用的时候必须在清单文件中去配置
在Application节点下面,添加节点<Provider android:name=”全类名” android:authorities=”主机名”></Provider>
name指定内容提供者的全类名
authorities代表主机名 通常是包名+业务名
小技巧,在eclipse左侧文件列表中,点击我们创建的类旁边的加号,看到定义的类,右键==> Copy Qualified Name拷贝全类名,包名加类名
此时会报黄色警告,说需要设置一下权限android:permission,可以不设置
继承之后需要实现以下方法:
query() 查询
insert() 插入
delete() 删除
update() 修改
都带有一个参数Uri对象,代表一个路径一个地址,我们需要检查这个Uri
清单文件:
<provider android:name="com.tsh.database.PersonDbProvider" android:authorities="com.tsh.database.PersonDbProvider"> </provider>
提供者:
package com.tsh.database; import android.content.ContentProvider; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; public class PersonDbProvider extends ContentProvider { @Override public boolean onCreate() { // TODO Auto-generated method stub return false; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // TODO Auto-generated method stub return null; } @Override public String getType(Uri uri) { // TODO Auto-generated method stub return null; } @Override public Uri insert(Uri uri, ContentValues values) { // TODO Auto-generated method stub return null; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; } }
相关文章
- 利用Frida绕过Android App(apk)的SSL Pinning
- Flask 框架:运用Axios库实现前后端交互
- 搭建Typecho小程序(QQ微信通用)
- Drozer-Android安全测试
- 个推支持小程序消息推送,助力开发者实现用户高触达、高转化
- android 终端模拟器
- android 系统浏览器 源码-Android 最最最简单的浏览器代码
- Android画中画(PIP)模式使用
- Android画中画(PIP)进阶---Action按钮的使用
- Android Kotlin制作签名白板并保存图片
- IOS中block和代理
- iOS对象属性详解
- ios多线程-GCD基本用法
- IOS开发-KVC
- IOS开发-KVO
- ASP.NET Core Web App应用第三方Bootstrap模板
- ABP入门系列(14)——应用BootstrapTable表格插件
- 软件分享 | 第十六期 安卓免费漫画APP
- 搭建IOS和Android性能监控工具
- 软件分享 | 第十九期 办公必备、证件扫描,文档提取(安卓/苹果端)