`

android ContentProvider

 
阅读更多

 

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全面解析

    在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享和访问的重要角色。ContentProvider使得应用程序可以将自己的数据结构暴露给其他应用,同时也能够访问其他应用公开的数据。本篇文章将全面解析...

    android ContentProvider Demo

    在Android开发中,ContentProvider是一种重要的组件,它允许应用程序之间共享数据。本示例"android ContentProvider Demo"将深入探讨如何创建和使用ContentProvider来实现跨应用的数据交换。ContentProvider作为...

    Android ContentProvider简单实现

    在Android开发中,ContentProvider是四大组件之一,它充当了数据共享的桥梁,使得不同的应用程序之间可以安全地访问和共享数据。本篇文章将详细介绍如何在Android中实现一个简单的ContentProvider。 首先,理解...

    Android+Room+ContentProvider

    在Android应用开发中,数据持久化是一个至关重要的环节,而Android Room和ContentProvider是其中的两个关键组件。本文将深入探讨这两个技术,并结合实际案例,解释如何在Android应用中使用它们来管理和共享SQLite...

    免费下载:android ContentProvider详细解析

    ### android ContentProvider 详解 #### 一、ContentProvider 概述 ContentProvider 是 Android 四大组件之一,它主要用于在不同的应用程序之间实现数据共享。在 Android 中,每个应用程序都有自己的私有存储空间...

    基于Android ContentProvider的总结详解

    【Android ContentProvider详解】 ContentProvider是Android系统提供的一种机制,使得不同应用程序之间可以安全地共享数据。通过ContentProvider,开发者可以将自己的数据集暴露出来,供其他应用查询、添加、删除和...

    android contentprovider的例子

    在Android应用开发中,ContentProvider是一个至关重要的组件,它扮演着数据共享的角色,使得不同的应用程序之间可以安全地读写共享数据。"android contentprovider的例子"这个主题将带你深入理解ContentProvider的...

    android contentprovider的使用总结

    在Android开发中,ContentProvider是四大组件之一,它充当了一个数据共享的桥梁,使得不同的应用程序之间可以安全地访问和操作数据。本篇文章将深入探讨如何使用ContentProvider进行数据库的增删改查操作,并结合...

    android contentprovider

    在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的角色。ContentProvider使得应用程序可以将自己的数据结构公开,让其他应用程序能够按照统一的方式进行读写操作,实现了不同...

    android 用ContentProvider操作文件

    在Android系统中,ContentProvider是一种核心组件,它允许应用程序之间共享数据,而无需直接访问对方的内部存储。在本教程中,我们将深入探讨如何利用ContentProvider来操作文件,以及其在跨应用数据传输中的作用。 ...

    android contentprovider使用示例

    在Android开发中,ContentProvider是四大组件之一,它充当了数据共享的桥梁,使得不同的应用程序之间可以安全地访问和操作数据。本示例将详细解释如何在Android中使用ContentProvider。 1. **ContentProvider基本...

    Android ContentProvider

    android Contentprovider的使用demo 所创建工程为andorid5.0环境,里面有四个工程,为了证明共享所以有两个程序,eclipse版本低的自己新建工程把 ContentProvider2,androidContentProvider两个工程里面拷贝出来就...

    Android ContentProvider 使用详解源码

    在Android系统中,ContentProvider是实现跨应用数据共享的关键组件,它允许应用程序暴露自己的数据集,使得其他应用可以通过标准的接口进行访问。本教程将深入解析ContentProvider的使用及其源码,结合SQLite数据库...

    Android contentprovider总结

    ### Android ContentProvider 总结 #### 一、ContentProvider 概述 ContentProvider 是 Android 四大组件之一,主要用于在不同的应用程序之间实现数据共享。它通过定义一套标准接口,允许其他应用通过这些接口来...

    Android ContentProvider的使用

    在Android应用开发中,ContentProvider是一个非常重要的组件,它扮演着数据共享和访问的角色。ContentProvider使得不同应用程序之间可以安全地共享数据,就像数据库一样,但又超越了数据库的范畴,因为它提供了统一...

    android contentprovider的使用

    在Android开发中,ContentProvider是Android四大组件之一,它的主要职责是实现应用程序间的数据共享。ContentProvider通过统一的接口让其他应用能够访问和修改特定的数据集,这些数据可能存储在SQLite数据库、文件...

    android ContentProvider内容提供者

    在Android开发中,ContentProvider是四大组件之一,它充当了应用程序间数据共享的桥梁。ContentProvider使得一个应用的数据可以被其他应用访问,同时也为数据提供了统一的接口。本篇文章将深入探讨ContentProvider的...

    Android中ContentProvider的示例

    在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地交换数据。本示例将深入讲解如何创建和使用ContentProvider。 首先,我们来理解ContentProvider的基本概念...

Global site tag (gtag.js) - Google Analytics