Android 开发之 ContentProvider 内容提供者
今天主要学习了这些内容,使用ContentProvider共享数据、从互联网上获取数据,以及上传数据(文件)到互联网上面:
ContentProvider(内容提供者)
当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。
一旦应用继承了ContentProvider类,我们就会把这个应用称为ContentProvider(内容提供者)。
当应用需要通过ContentProvider对外共享数据时,第一步需要继承ContentProvider并重写下面方法:
public class PersonContentProvider extends ContentProvider{
public boolean onCreate()
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)
public String getType_r(Uri uri)}
第二步需要在AndroidManifest.xml使用对该ContentProvider进行配置,为了能让其他应用找到该ContentProvider , ContentProvider 采用了authorities(主机名/域名)对它进行唯一标识,你可以把 ContentProvider看作是一个网站(想想,网站也是提供数据者),authorities 就是他的域名:
itcast.provider.personprovider"/>
Uri代表了要操作的数据,Uri主要包含了两部分信息:1》需要操作的ContentProvider
〖黑软手机资讯频道〗
,2》对ContentProvider中的什么数据进行操作,
当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver 类来完成,要获取ContentResolver 对象,可以使用Activity提供的 getContentResolver_r()方法。
从互联网上获取数据:利用HttpURLConnection对象,我们可以从网络中获取网页数据,
从connectionl里面获取输入流,得到了输入流,我们就可以对其进行保存,播放等。
URL url = new URL("http://photocdn.sohu.com/20100125/Img269812337.jpg");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5* 1000);
conn.setRequestMethod("GET");
if (conn. getResponseCode_r() != 200) throw new RuntimeException("请求url失败");
InputStream is = conn. getInputStream_r();
上传数据到互联网:
不用浏览器,我们也可以上传数据(文件)的哦,我们可以模拟Http请求,利用连接得到输出流,将数据写到输出流:
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
conn.setDoOutput(true);//发送POST请求必须设置允许输出
conn.setUseCaches(false);//不使用Cache
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");//维持长连接
conn.setRequestProperty("Charset", "UTF-8");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
DataOutputStream outStream = new DataOutputStream(conn. getOutputStream_r());
outStream.write(data);
outStream.flush();
if( conn. getResponseCode_r() == 200 ){
String result = readAsString(conn. getInputStream_r(), "UTF-8");
outStream.close();
System.out.println(result);
}
本篇文章来源于 黑软基地-中国最大的黑客软件安全教程下载站! 原文链接:http://www.hackvip.com/mobiwen/html/Mobile_221073.html
Android 开发之 ContentProvider 内容提供者相关推荐
- Android组件系列----ContentProvider内容提供者 和 android:authorities
authorities 是provider所在的包的名字+provider本身定义的名称 ---zgs [正文] 一.ContentProvider简介: ContentProvider内容提供者(四 ...
- Android开发之ContentProvider结合LoaderManager加载数据(图文源代码分享)
ContentProvider作为Android的四大存储方式之一,有着广泛的应用性,它暴露了数据地址,可以让其他应用访问数据,可以用于存储图片.通讯录等信息,这篇博文将详细介绍ContentProv ...
- android 53 ContentProvider内容提供者
ContentProvider内容提供者:像是一个中间件一样,一个媒介一样,可以以标准的增删改差操作对手机的文件.数据库进行增删改差.通过ContentProvider查找sd卡的音频文件,可以提供标 ...
- Android 使用ContentProvider(内容提供者)查询手机联系
在开发应用程序过程中有时候会关联到用户的手机联系人,在Android的为开发者提供了ContentProvider内容提供者来获取手机的联系人,首先我在模拟器中保存了两个联系人如下所示: lisi:电 ...
- Android ContentProvider 内容提供者
ContentProvider 内容提供者,是Android四大组件之一. 一.简述 可以理解为一个特殊的存储数据的类型,它提供了一套标准的接口来获取和操作数据.可以把数据封装到ContentProv ...
- Android开发之旅:应用程序基础及组件
--成功属于耐得住寂寞的人,接下来几篇将讲述Android应用程序的原理及术语,可能会比较枯燥.如果能够静下心来看,相信成功将属于你. 引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android ...
- Android开发之旅:android架构
引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建and ...
- Android开发之TextView高级应用
Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...
- Android开发之旅:组件生命周期(二)
引言 应用程序组件有一个生命周期--一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生 ...
最新文章
- zhs16gbk对应mysql_[Oracle] 彻底搞懂Oracle字符集
- awk的求和计算使用;awk多个分隔符如何使用?
- 让弹出窗口变得“体贴”一些
- charles 抓包 (二)
- ORACLE MTTR
- Linux 系统编程
- qt tounicode 崩溃_吐槽大会丨细数那些打块的崩溃瞬间!看看你中了几枪?
- Briefly unavailable for scheduled maintenance message after doing automatic upgrade
- envi窗口滤波_高光谱ENVI图像处理之滤波
- 读贾志鹏线性筛有感 (莫比乌斯函数的应用)
- C# 判断文件/文件夹是否存在;
- LCD的控制驱动及基与MCU接口的特点
- 计算机主机内部结构连接,电脑主机内部结构图详解
- 数据库sql优化总结之1-百万级数据库优化方案+案例分析
- 获取iv和encryptedData
- python爬取雪球网交易数据
- C语言zh字符串指针的大小,C语言的一些小技巧,小知识
- 车秘android版本最新版本,车秘下载2021安卓最新版_手机app官方版免费安装下载_豌豆荚...
- php__file__用法,PHP 的常量__FILE__的用法图解
- 神仙打架看不懂?用人话解读NIPS神经网络攻防赛清华三连冠团队模型算法
热门文章
- 放弃linux桌面,Linux 应当放弃桌面
- 2023苹果内核JAVA原生影视双端修改版源码+附安装教程
- 从github下载项目并运行
- 微信小程序组件所在页面的生命周期
- HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明
- 「镁客早报」NASA成立寻找外星人研究小组;CBInsights公布全球32家AI独角兽名单...
- 微信小程序通讯录列表
- 控制中心可录屏下载_控制中心APP下载-ios12控制中心下载v1.4 安卓版-西西软件下载...
- URL编码/解码详解
- Ubuntu 20.04安装JRE和JDK