- 浏览: 675570 次
- 性别:
- 来自: 深圳
最新评论
-
fingerplay:
请问一下,第一份,逻辑树,就是代码里可以操纵的,例如更改lay ...
UIView与CALayer -
ok_lyc:
分享到哪里去了
iPhoneUIFont各种字体 -
lliiqiang:
我的个人理解:wait方法是在java虚拟机层面上在获取对象锁 ...
JAVA多线程同步wait、notify、synchronized -
milixw:
谢谢分享,就在找这个
iphone 推送通知 java 实现 -
wsqwsq000:
你的log4j包不行,上网搜一下:log4j-1.2.16.j ...
iphone 推送通知 java 实现
android中对数据操作包含有:
file, sqlite3, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据,程序不能通过这三种方法去操作别的应用内的数据。
android中提供ContectResolver与ContentProvider来操作别的应用程序的数据。
一、 使用方式
一个应用实现ContentProvider来提供内容给别的应用来操作,
一个应用通过ContentResolver来操作别的应用数据,当然在自己的应用中也可以。
1. ContentResolver的获取
通过Context类:
Java代码
public abstract ContentResolver getContentResolver();
public abstract ContentResolver getContentResolver();
2. ContentResolver常用操作
Java代码
//查询:
public final Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder);
//新增
public final Uri insert(Uri url, ContentValues values)
//更新
public final int update(Uri uri, ContentValues values, String where,
String[] selectionArgs)
//删除
public final int delete(Uri url, String where, String[] selectionArgs)
//查询:
public final Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder);
//新增
public final Uri insert(Uri url, ContentValues values)
//更新
public final int update(Uri uri, ContentValues values, String where,
String[] selectionArgs)
//删除
public final int delete(Uri url, String where, String[] selectionArgs)
以上操作实际是通过Uri来匹配ContentProvider, 再由ContentProvider来进行具体操作的。
操作的参数和操作sqlite各函数的参数意义是一样的。
二、实现ContentProvider提供给外界访问
调用者ContentResoler是通过一个Uri来找到相应的ContentProvider的来进行实际操作。
1. Uri概念
一个Uri的样子如:
Java代码
scheme://authorities/path/id
scheme://authorities/path/id
如电话记录:
Java代码
public static final Uri CONTENT_URI = Uri.parse("content://call_log/calls");
public static final Uri CONTENT_URI = Uri.parse("content://call_log/calls");
a.根据scheme不同调用不程序来处理, 常用的:content, android_resource, file, http等
b.authorities是provider定义的,在AndroidManifest.xml中定义
c.path和id就好理解的。
2. Uri定义
创建自己的Uri, 如:
Java代码
content://com.shguo.statistic/sms
content://com.shguo.statistic/sms
一般数据中都有dir和item两种(当然可定义多个)。为ContentProvider创建息的UriMatcher并添加这两者:
Java代码
String AUTHORITY = "com.shguo.statistics";
UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(AUTHORITY, "sms", SMS_DIR); //SMS_DIR = 1
sUriMatcher.addURI(AUTHORITY, "sms/#", SMS_ITEM); //SMS_ITEM = 2
String AUTHORITY = "com.shguo.statistics";
UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(AUTHORITY, "sms", SMS_DIR); //SMS_DIR = 1
sUriMatcher.addURI(AUTHORITY, "sms/#", SMS_ITEM); //SMS_ITEM = 2
contentProvider要根据传入uri判断是dir还是item来操作的。
Java代码
switch (sUriMatcher.match(uri))
switch (sUriMatcher.match(uri))
来分步操作.
3. 定义MIME类型,
覆盖getType方法:主要是根据uri来返回Provider的MIME类型
Java代码
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.shguo.sms";
ublic static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.shguo.sms";
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.shguo.sms";
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.shguo.sms";
getType()为:
Java代码
switch (sUriMatcher.match(uri)) {
case SMS_DIR:
return CONTENT_TYPE;
case SMS_ITEM:
return CONTENT_ITEM_TYPE;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
switch (sUriMatcher.match(uri)) {
case SMS_DIR:
return CONTENT_TYPE;
case SMS_ITEM:
return CONTENT_ITEM_TYPE;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
4. 实现query, insert, delete, update四个操作。
具体的实现可以用sqlite, file等。并根据uri分情况操作。
a. query时如果是item加查询条件id.
where = "_ID=" + uri.getPathSegments().get(1) + (!TextUtils.isEmpty(where) ? " AND (" + where + ')' : "";
最后要加上
cursor.setNotificationUri(getContext().getContentResolver(), uri);
b. insert时要求uri只能是dir. 成功之后返回一个加id的uri.
Java代码
Uri insertUri = ContentUris.withAppendedId(CONTENT_URI, rowId);
Uri insertUri = ContentUris.withAppendedId(CONTENT_URI, rowId);
c. update、delete与query差不多。
Java代码
//注意通知注册uri的观察者。
getContext().getContentResolver().notifyChange(uri, null);
//注意通知注册uri的观察者。
getContext().getContentResolver().notifyChange(uri, null);
5. 在AndroidManifest.xml中定义
provider元素,主要属性有:
Java代码
name => ContentProvider类名
authorities => content type的授权部分
file, sqlite3, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据,程序不能通过这三种方法去操作别的应用内的数据。
android中提供ContectResolver与ContentProvider来操作别的应用程序的数据。
一、 使用方式
一个应用实现ContentProvider来提供内容给别的应用来操作,
一个应用通过ContentResolver来操作别的应用数据,当然在自己的应用中也可以。
1. ContentResolver的获取
通过Context类:
Java代码
public abstract ContentResolver getContentResolver();
public abstract ContentResolver getContentResolver();
2. ContentResolver常用操作
Java代码
//查询:
public final Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder);
//新增
public final Uri insert(Uri url, ContentValues values)
//更新
public final int update(Uri uri, ContentValues values, String where,
String[] selectionArgs)
//删除
public final int delete(Uri url, String where, String[] selectionArgs)
//查询:
public final Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder);
//新增
public final Uri insert(Uri url, ContentValues values)
//更新
public final int update(Uri uri, ContentValues values, String where,
String[] selectionArgs)
//删除
public final int delete(Uri url, String where, String[] selectionArgs)
以上操作实际是通过Uri来匹配ContentProvider, 再由ContentProvider来进行具体操作的。
操作的参数和操作sqlite各函数的参数意义是一样的。
二、实现ContentProvider提供给外界访问
调用者ContentResoler是通过一个Uri来找到相应的ContentProvider的来进行实际操作。
1. Uri概念
一个Uri的样子如:
Java代码
scheme://authorities/path/id
scheme://authorities/path/id
如电话记录:
Java代码
public static final Uri CONTENT_URI = Uri.parse("content://call_log/calls");
public static final Uri CONTENT_URI = Uri.parse("content://call_log/calls");
a.根据scheme不同调用不程序来处理, 常用的:content, android_resource, file, http等
b.authorities是provider定义的,在AndroidManifest.xml中定义
c.path和id就好理解的。
2. Uri定义
创建自己的Uri, 如:
Java代码
content://com.shguo.statistic/sms
content://com.shguo.statistic/sms
一般数据中都有dir和item两种(当然可定义多个)。为ContentProvider创建息的UriMatcher并添加这两者:
Java代码
String AUTHORITY = "com.shguo.statistics";
UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(AUTHORITY, "sms", SMS_DIR); //SMS_DIR = 1
sUriMatcher.addURI(AUTHORITY, "sms/#", SMS_ITEM); //SMS_ITEM = 2
String AUTHORITY = "com.shguo.statistics";
UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(AUTHORITY, "sms", SMS_DIR); //SMS_DIR = 1
sUriMatcher.addURI(AUTHORITY, "sms/#", SMS_ITEM); //SMS_ITEM = 2
contentProvider要根据传入uri判断是dir还是item来操作的。
Java代码
switch (sUriMatcher.match(uri))
switch (sUriMatcher.match(uri))
来分步操作.
3. 定义MIME类型,
覆盖getType方法:主要是根据uri来返回Provider的MIME类型
Java代码
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.shguo.sms";
ublic static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.shguo.sms";
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.shguo.sms";
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.shguo.sms";
getType()为:
Java代码
switch (sUriMatcher.match(uri)) {
case SMS_DIR:
return CONTENT_TYPE;
case SMS_ITEM:
return CONTENT_ITEM_TYPE;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
switch (sUriMatcher.match(uri)) {
case SMS_DIR:
return CONTENT_TYPE;
case SMS_ITEM:
return CONTENT_ITEM_TYPE;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
4. 实现query, insert, delete, update四个操作。
具体的实现可以用sqlite, file等。并根据uri分情况操作。
a. query时如果是item加查询条件id.
where = "_ID=" + uri.getPathSegments().get(1) + (!TextUtils.isEmpty(where) ? " AND (" + where + ')' : "";
最后要加上
cursor.setNotificationUri(getContext().getContentResolver(), uri);
b. insert时要求uri只能是dir. 成功之后返回一个加id的uri.
Java代码
Uri insertUri = ContentUris.withAppendedId(CONTENT_URI, rowId);
Uri insertUri = ContentUris.withAppendedId(CONTENT_URI, rowId);
c. update、delete与query差不多。
Java代码
//注意通知注册uri的观察者。
getContext().getContentResolver().notifyChange(uri, null);
//注意通知注册uri的观察者。
getContext().getContentResolver().notifyChange(uri, null);
5. 在AndroidManifest.xml中定义
provider元素,主要属性有:
Java代码
name => ContentProvider类名
authorities => content type的授权部分
发表评论
-
google开放的maps api接口
2012-01-12 22:51 1172google开放的Maps api接口,包括很多版 ... -
iphone中请求对应的Mime type
2011-09-21 10:03 2248Extension MIME type Desc ... -
android前端与java web后台的ssl交互
2011-08-18 17:39 2713android前端与java web后台如何进行ssl交 ... -
android style
2011-07-09 21:47 1409对于能够显示文字的控件(如TextView EditTex ... -
android 定时器
2011-07-09 21:47 2114在Android上常用的定时器有两种,一种是Java.util ... -
android 4大组件介绍
2011-07-09 21:47 1884Android组件 横看成岭侧成峰,远近高低各不同。 -- ... -
view中的getTag何setTag
2011-07-09 21:46 1369View中的setTag(Onbect)表示给View添加一个 ... -
android handler介绍
2011-07-09 21:46 1331/*** * Handler的定义: * 主要接受 ... -
AsyncTask的使用
2011-07-09 21:46 1053本片不多说 直接引用: ... -
Android 调试桥abd
2011-07-09 21:44 1040Android 调试桥(adb)是多种用途的工具,该工具可 ... -
Android 应用程序之间数据共享—ContentProvider
2011-07-09 21:44 1909在Android 应用程序之间数据共享—-ContentRes ... -
Content Provider
2011-07-09 21:44 1120Android程序的主要4部分 ... -
android contentResolver与contentProvider如何关联在一起的
2011-07-09 21:43 2048看到一篇文章觉得不错,推荐给大家,希望大家喜欢Applicat ... -
android service入门
2011-07-09 21:42 855android SDK提供了Service,用于类似*nix守 ... -
AsyncQueryHandler
2011-07-09 21:42 1346AsyncQueryHandler研究 andr ... -
android下载进度条
2011-07-09 21:41 4111我们今天开始学习的是下载进度的实现。今天的这段代码是网上找的, ... -
android UI设计之TableLayout
2011-07-09 21:41 1221TableLayout和我们平时在网页上见到的Table有所不 ... -
android如何获取后台正在运行的service
2011-07-09 21:40 3992给一段获取正在运行的后台service的代码,如下: ... -
Android之getSystemService
2011-07-09 21:40 1497getSystemService是Android很重要的一个 ... -
android体系架构
2011-07-09 21:39 2462作者:张华 发表于:200 ...
相关推荐
此为ContentResolver与ContentProvider的使用Demo.
主要介绍了android之ContentResolver与ContentProvider介绍,需要的朋友可以参考下
android 自定义 ContentProvider 以及 ContentResolver
安卓程序间数据共享的实现,包含两个程序,共享资源的程序和读取资源的程序,共享资源的程序包含了SQLite数据库的使用。
ContentProvider与ContentResolver概念上的东西的就不讲了,主要讲一下ContentResolver的作用以及使用方法。 ContentResolver的作用: 1、可以通过ContentResolver来获取android内部的数据,比如联系人信息、系统的...
利用ContentResolver访问者获取手机短信信息,在此记录一下,一遍以后查询。 首先看一下结果,结果如下: activity_message.xml类: <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android...
主要介绍了Android中ContentProvider和ContentResolver详解的相关资料,需要的朋友可以参考下
自定义ContentProvider的流程 ContentResolver访问通讯录数据库
ContentProvider为Android四大组件之一,主要用来应用程序之间的数据共享,也就是说一个应用程序用ContentProvider将自己的数据暴露出来,其他应用程序通过ContentResolver来对其暴露出来的数据进行增删改查。...
程序例子包含了2个独立的Android程序,其中一个负责提供数据并提供本地操作,另外一个可以跨进程访问提供者提供的数据。例子虽然简单,但是覆盖到了Content Provider里面的知识点,例如集成Content Provider,Uri的...
之前在用到ContentProvider时也是在网上找的教程,但是按照那些做法不怎么全面,我是没有实现出来,并且对于报错也没有给出解释原因与解决办法,也是通过借鉴与自己摸索,将自己 的一点想法分享出来。包含 ...
内容概要: ...能学到什么:ContentProvider、ContentResolver、CursorAdapter、Cursor、后台服务、前台服务、绑定服务、自定义广播、播放进度条、OnClickListener监听器 适用人群:Android开发初学者
博客《ContentProvider数据库共享之 实例讲解》对应源码 博客地址:http: blog csdn net harvic880925 article details 44591631
ContentResolver, 该资源和本人上传的另外一个工程ContentProvider一起使用,可以深刻理解Android四大组件之一《ContentProvider》的用法
总结ContentProvider知识,让大家更好的去学习android知识!数据库数据存储!
Android 四大件组件之一ContentProvider demo案例,下载即可运行学习。存储数据使用系统自带的数据库SQLIteOpenHelper,自定义ContentProvider,通过ContentResolver访问ContentProvider,实现数据新增、查找、删除...
内容提供者是一个Android应用的基础模块,提供内容给这个应用,它们封装数据和提供它给应用通过这个ContentResolver接口,使用ContentProvider可以在不同的应用程序之间共享数据,android为常见的一些数据提供了...
通过contentresolver调用另一个应用的provider,