ContentProvider
概述:1、ContentProvider是程序间共享数据的一种机制,是Android提供的数据访问和存储的标准接口。
2、它屏蔽了数据底层的细节实现,提高了数据操作的安全性,当我们不希望访问者直接操作我们的底层
数据但又要为其提供数据接口时,我们可以为自己的数据建立ContentProvider以供外部程序访问。
3、ContentProvider是由ContenResolver代理得到的,并不需要用户手动实例化。
4、注册ContentProvider content://com.ssj.android.provider.UserProvider/tb_user/122
<provider android:name="UserProvider" android:authorities="com.ssj.android.provider.UserProvider"/>
abstract ContentProvider
abstract boolean onCreate();
abstract Uri insert(Uri uri,ContentValues values);
abstract int delete(Uri uri,String where,String[] whereArgs);
abstract Cursor query(Uri uri,String[] columnNames,Stirng where,
String whereArgs,String order);
abstract update(Uri uri,ContentValues values,String where,String whereArgs);
abstract String getType(Uri uri);//返回指定资源的类型
abstract ContentResolver
通过传入的Uri获得相应的ContentProvider,在通过ContentProvider执行相应的数据操作方法。
ContentResolver(Context context);//可通过Activity的this。方式得到
final Uri insert(Uri uri,ContentValues values);
final int delete(Uri uri,String where,String[] whereArgs);
final Cursor query(Uri uri,String[] columnNames,Stirng where,
String whereArgs,String order);
final update(Uri uri,ContentValues values,String where,String whereArgs);
final String getType(Uri uri);//返回指定资源的类型
final InputStream openInputStream(Uri uri);
final outputStream openOutputStream(Uri uri);
Uri 1、格式: 协议头://唯一标示(可随意写,保证唯一性即可,通常为包名.类名)/数据路径/记录id
content://com.ssj.android.provider/tb_user/122 ----------操作数据库文件user表id为122的记录
content://com.ssj.android.provider/user\name ----------操作xml文件user中的name节点
2、通过UriMatcher 的match()method为执行特定SQL语句提供判断条件
3、ContentProvider的insert方法要求返回Uri,所以要解析uri。
static Uri parse(String uri);
UriMatcher:
1、在ContentProvider中建立UriMatcher匹配库。
2、当没有匹配项时返回-1
3、#匹配一个数字, *匹配人一个字符
UriMatcher(int matchCode);
void addURI(String authority,String pathDate,int matchCode);//authourity:协议头,pathDate:数据路径 ,matchCode:匹配时的返回值
int match(Uri uri);
URIUtils
ContentUris:用于向Uri附加id或从Uri中提取id
ContentUrils();
static long parseId(Uri uri);//从Uri中解析id
static withAppendedId(Uri uri,long id);//向Uri中附加id
UriMatcher示例:
Class MyContentProvider extends ContentProvider
{ //用户表tb_user(userid,username),日志表tb_rz(rzid,rzbt,rznr,userid)
private final static int USERS=1;
private final static int USER=11;
private final static int RZS=2;
private final static int RZ=21;
private UriMatcher myMatcher=new UriMatcher(-1);
//建立uri匹配库
static
{
myMatcher.addUri("com.ssj.android.provider","tb_user",USERS);
myMatcher.addUri("com.ssj.android.provider","tb_user/#",USER);
myMatcher.addUri("com.ssj.android.provider","tb_rz",RZS);
myMatcher.addUri("com.ssj.android.provider","tb_rz/#",RZ);
}
public Stirng getType(Uri uri)
{
int macth=myMatcher.macth(uri);
switch(macth)
{
case USERS:
return "vnd.android.cursor.dir/tb_user"; break;
case USER:
return "vnd.android.cursor.item/tb_user"; break;
case RZS:
return return "vnd.android.cursor.dir/tb_rz"; break;
case RZ:
return "vnd.android.cursor.item/tb_rz"; break;
default:
return null;
}
}
}
分享到:
相关推荐
在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享和访问的重要角色。ContentProvider使得应用程序可以将自己的数据结构暴露给其他应用,同时也能够访问其他应用公开的数据。本篇文章将全面解析...
在Android开发中,ContentProvider是一种重要的组件,它允许应用程序之间共享数据。本示例"android ContentProvider Demo"将深入探讨如何创建和使用ContentProvider来实现跨应用的数据交换。ContentProvider作为...
在Android开发中,ContentProvider是四大组件之一,它充当了数据共享的桥梁,使得不同的应用程序之间可以安全地访问和共享数据。本篇文章将详细介绍如何在Android中实现一个简单的ContentProvider。 首先,理解...
在Android应用开发中,数据持久化是一个至关重要的环节,而Android Room和ContentProvider是其中的两个关键组件。本文将深入探讨这两个技术,并结合实际案例,解释如何在Android应用中使用它们来管理和共享SQLite...
### android ContentProvider 详解 #### 一、ContentProvider 概述 ContentProvider 是 Android 四大组件之一,它主要用于在不同的应用程序之间实现数据共享。在 Android 中,每个应用程序都有自己的私有存储空间...
【Android ContentProvider详解】 ContentProvider是Android系统提供的一种机制,使得不同应用程序之间可以安全地共享数据。通过ContentProvider,开发者可以将自己的数据集暴露出来,供其他应用查询、添加、删除和...
在Android应用开发中,ContentProvider是一个至关重要的组件,它扮演着数据共享的角色,使得不同的应用程序之间可以安全地读写共享数据。"android contentprovider的例子"这个主题将带你深入理解ContentProvider的...
在Android开发中,ContentProvider是四大组件之一,它充当了一个数据共享的桥梁,使得不同的应用程序之间可以安全地访问和操作数据。本篇文章将深入探讨如何使用ContentProvider进行数据库的增删改查操作,并结合...
在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的角色。ContentProvider使得应用程序可以将自己的数据结构公开,让其他应用程序能够按照统一的方式进行读写操作,实现了不同...
在Android系统中,ContentProvider是一种核心组件,它允许应用程序之间共享数据,而无需直接访问对方的内部存储。在本教程中,我们将深入探讨如何利用ContentProvider来操作文件,以及其在跨应用数据传输中的作用。 ...
在Android开发中,ContentProvider是四大组件之一,它充当了数据共享的桥梁,使得不同的应用程序之间可以安全地访问和操作数据。本示例将详细解释如何在Android中使用ContentProvider。 1. **ContentProvider基本...
android Contentprovider的使用demo 所创建工程为andorid5.0环境,里面有四个工程,为了证明共享所以有两个程序,eclipse版本低的自己新建工程把 ContentProvider2,androidContentProvider两个工程里面拷贝出来就...
在Android系统中,ContentProvider是实现跨应用数据共享的关键组件,它允许应用程序暴露自己的数据集,使得其他应用可以通过标准的接口进行访问。本教程将深入解析ContentProvider的使用及其源码,结合SQLite数据库...
### Android ContentProvider 总结 #### 一、ContentProvider 概述 ContentProvider 是 Android 四大组件之一,主要用于在不同的应用程序之间实现数据共享。它通过定义一套标准接口,允许其他应用通过这些接口来...
在Android应用开发中,ContentProvider是一个非常重要的组件,它扮演着数据共享和访问的角色。ContentProvider使得不同应用程序之间可以安全地共享数据,就像数据库一样,但又超越了数据库的范畴,因为它提供了统一...
在Android开发中,ContentProvider是Android四大组件之一,它的主要职责是实现应用程序间的数据共享。ContentProvider通过统一的接口让其他应用能够访问和修改特定的数据集,这些数据可能存储在SQLite数据库、文件...
在Android开发中,ContentProvider是四大组件之一,它充当了应用程序间数据共享的桥梁。ContentProvider使得一个应用的数据可以被其他应用访问,同时也为数据提供了统一的接口。本篇文章将深入探讨ContentProvider的...
在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地交换数据。本示例将深入讲解如何创建和使用ContentProvider。 首先,我们来理解ContentProvider的基本概念...