• 使用Content Provider共享数据

    Provider的主要方法
    服务器君一共花费 10.202 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    Android中提供ContectResolver与ContentProvider来操作别的应用程序的数据。

    使用方式:

    • 一个应用实现ContentProvider来提供内容给别的应用来操作,
    • 一个应用通过ContentResolver来操作别的应用数据,当然在自己的应用中也可以。

    以下这段是Google Doc中对Content Provider的大致概述:

    内容提供者将一些特定的应用程序数据供给其它应用程序使用。内容提供者继承于ContentProvider 基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个 ContentResolver 对象,调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。

    Android提供了一些主要数据类型的ContentProvider,比如音频、视频、图片和私人通讯录等。可在android.provider包下面找到一些Android提供的ContentProvider。通过获得这些ContentProvider可以查询它们包含的数据,当然前提是已获得适当的读取权限。

    接下来我们继承 ContentProvider 复写一个 DataProvider,看看有哪些主要的方法,并且了解一下这些方法的。

    package net.nowamagic.dao;
    
    import android.content.ContentProvider;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.net.Uri;
    
    public class DataProvider 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;
    	}
    
    }
    

    ContentProvider类主要方法的作用:

    • public boolean onCreate() —— 该方法在ContentProvider创建后就会被调用,Android开机后,ContentProvider在其它应用第一次访问它时才会被创建。
    • public Cursor query(Uri, String[], String, String[], String) —— 该方法用于供外部应用从ContentProvider中获取数据,查询指定Uri的ContentProvider,返回一个Cursor。
    • public Uri insert(Uri, ContentValues)  —— 该方法用于供外部应用往ContentProvider添加数据,添加数据到指定Uri的ContentProvider中
    • public int update(Uri, ContentValues, String, String[]) —— 该方法用于供外部应用更新ContentProvider中的数据,更新指定Uri的ContentProvider中的数据。
    • public int delete(Uri, String, String[]) —— 该方法用于供外部应用从ContentProvider删除数据,从指定Uri的ContentProvider中删除数据
    • public String getType(Uri) —— 该方法用于返回当前Url所代表数据的MIME类型,返回指定的Uri中的数据的MIME类型。

    如果操作的数据属于集合类型,那么MIME类型字符串应该以vnd.android.cursor.dir/开头,例如:要得到所有person记录的Uri为content://com.ljq.provider.personprovider/person,那么返回的MIME类型字符串应该为:"vnd.android.cursor.dir/person"。

    如果要操作的数据属于非集合类型数据,那么MIME类型字符串应该以vnd.android.cursor.item/开头,例如:得到id为10的person记录,Uri为content://com.ljq.provider.personprovider/person/10,那么返回的MIME类型字符串为:"vnd.android.cursor.item/person"。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [软件工程与项目管理] 浏览器的CSS解析 7 个条目
  2. [PHP程序设计] PHP中的Hash算法 3 个条目
  3. [JavaScript程序设计] 关于HTTP Keep-Alive 6 个条目
  4. [移动开发] Layout_weight属性解析 5 个条目
  5. [运维管理] 路由器与交换机 4 个条目
  6. [Python程序设计] Django数据库模型 6 个条目
  7. [Python程序设计] Django 入门知识浅介 10 个条目
  8. [移动开发] 刷机与root相关 2 个条目
  9. [智力开发与知识管理] 整体性学习策略 9 个条目
  10. [JavaScript程序设计] jQuery与表单操作 2 个条目
  11. [移动开发] Android抽屉导航NavigationDrawer 5 个条目
  12. [Python程序设计] Python语言概述 6 个条目
窗口 -- [博客]