ContentProvider 用于应用程序(Android Application)之间传递数据,包括Insert, update, delete, query。

下面的例子是在两个应用之间传递数据。

应用一(创建ContentProviderTestA)

TestContentProvider.java

public class TestContentProvider extends ContentProvider {

private final static UriMatcher URI_MATCHER;
 private final static int ALL_MESSAGES = 1;
 private final static int SPECIFIC_MESSAGE = 2;

static {
  URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
  URI_MATCHER.addURI("com.example.contentprovidertesta", "item", ALL_MESSAGES);
  URI_MATCHER.addURI("com.example.contentprovidertesta", "specialitem", SPECIFIC_MESSAGE);
 }

public static final Uri CONTENT_URI = Uri
   .parse("content://com.example.contentprovidertesta");

private final static String DEBUG = "ContentProvider";

@Override
 public String getType(Uri uri) {
  switch (URI_MATCHER.match(uri)) {
  case SPECIFIC_MESSAGE:
   Log.d(DEBUG, "specialitem");
   return "specialitem";
  case ALL_MESSAGES:
   Log.d(DEBUG, "item");
   return "item/normal";
  }
  return "item";
 }

@Override
 public int delete(Uri uri, String selection, String[] selectionArgs) {
  Log.d(DEBUG, uri.toString());
  if (getType(uri).equals("specialitem")) {
   Log.d(DEBUG, "-----------delete sepcial items-------------");
  } else {
   Log.d(DEBUG, "-----------delete-------------");
  }
  return 0;
 }

@Override
 public Uri insert(Uri uri, ContentValues values) {
  return null;
 }

@Override
 public boolean onCreate() {
  return false;
 }

@Override
 public Cursor query(Uri uri, String[] projection, String selection,
   String[] selectionArgs, String sortOrder) {
  return null;
 }

@Override
 public int update(Uri uri, ContentValues values, String selection,
   String[] selectionArgs) {
  return 0;
 }
}

AndroidManifest.xml

<application>

<provider
            android:name="com.example.contentprovidertesta.TestContentProvider"
            android:authorities="com.example.contentprovidertesta" />

</application>

应用二 ContentProviderTest

public class MainActivity extends Activity {

private final Uri testallmessage = Uri
   .parse("content://com.example.contentprovidertesta/item");
 private final Uri testspecialmessage = Uri
   .parse("content://com.example.contentprovidertesta/specialitem");

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

@Override
 protected void onResume() {
  super.onResume();
  testContentProvider();
 }

private void testContentProvider() {
  getContentResolver().delete(testallmessage, null, null);
  getContentResolver().delete(testspecialmessage, null, null);
 }

}

当安装两个应用后,再运行应用二出现的log,

content://com.example.contentprovidertesta/item
item
-----------delete-------------
content://com.example.contentprovidertesta/specialitem
specialitem
-----------delete sepcial items-------------

(Android) ContentProvider 实例的更多相关文章

  1. Android基础 : Android ContentProvider

    Android 应用程序通过ContentProvider实现方式统一的数据共享功能. 外界的程序通过ContentResolver接口可以访问ContentProvider提供的数据,在Activi ...

  2. Android ContentProvider 启动分析

    对于 ContentProvider 还不是很熟悉的同学,可以阅读上一篇 Android ContentProvider 基本原理和使用详解.本文主要是对 contentProvider 的源码进行分 ...

  3. Android HTTP实例 使用GET方法和POST方法发送请求

    Android HTTP实例 使用GET方法和POST方法发送请求 Web程序:使用GET和POST方法发送请求 首先利用MyEclispe+Tomcat写好一个Web程序,实现的功能就是提交用户信息 ...

  4. Android HTTP实例 发送请求和接收响应

    Android HTTP实例 发送请求和接收响应 Android Http连接 实例:发送请求和接收响应 添加权限 首先要在manifest中加上访问网络的权限: <manifest ... & ...

  5. Android图像处理实例教程

    Android图像处理实例教程 原始出处 http://vaero.blog.51cto.com/4350852/856750

  6. 一个简单的Android小实例

    原文:一个简单的Android小实例 一.配置环境 1.下载intellij idea15 2.安装Android SDK,通过Android SDK管理器安装或卸载Android平台   3.安装J ...

  7. Android ContentProvider完整案例

    ContentData类,提供数据常量: /** * 提供ContentProvider对外的各种常量,当外部数据需要访问的时候,就可以参考这些常量操作数据. * @author HB * */ pu ...

  8. android本地数据库,微信数据库WCDB for Android 使用实例

    android本地数据库,微信数据库WCDB for Android 使用实例 Home · Tencent/wcdb Wikihttps://github.com/Tencent/wcdb/wiki ...

  9. 【转】 Android常用实例—Alert Dialog的使用

    Android常用实例—Alert Dialog的使用 AlertDialog的使用很普遍,在应用中当你想要用户做出“是”或“否”或者其它各式各样的选择时,为了保持在同样的Activity和不改变用户 ...

随机推荐

  1. css复合属性的写法

    # 复合属性也称为 "shortcut" property (快捷属性),它作用是为了简化代码,提高页面运行的效率. # 下面的内容会介绍 2 个比较常用的复合属性 "f ...

  2. llinuxs介绍与常用命令

    一.Linux系统概述1.计算机资源软件资源硬件资源操作系统2.操作系统WindowsMacOSLinuxUnix3.Linux含义狭义Linux:由Linus一段内核代码广义Linux:Linux厂 ...

  3. 走进C标准库(1)——assert.h,ctype.h

    默默觉得原来的阅读笔记的名字太土了,改了个名字,叫做走进C标准库. 自己就是菜鸟一只,第一次具体看C标准库,文章参杂了对<the standard C library>的阅读和对源码的一些 ...

  4. linux下gmplayer安装(亲测OK!)

    需要的安装包及下载地址:  mplayer源代码包(MPlayer-1.0rc4.tar.bz2)下载:http://www.mplayerhq.hu/MPlayer/releases/ 解码器安装包 ...

  5. QT连接mysql中文显示问题

    亲测OK! #vim /etc/mysql/my.cnf [mysqld]下面加入: default-character-set=utf8 重启mysql /etc/init.d/mysql rest ...

  6. 17.java.lang.CloneNotSupportedException

    java.lang.CloneNotSupportedException不支持克隆异常 当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常.

  7. BZOJ 1143 [CTSC2008]祭祀river(二分图匹配)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1143 [题目大意] 给出一张有向图,问最大不连通点集,连通具有传递性 [题解] 我们将 ...

  8. Android UI学习组件概述

    Android的UI组件繁多,如果学习的时候不能自己总结和分类而是学一个记一个不去思考和学习他们内在的联系那真的是只有做Farmer的命了.为了向注定成为Farmer的命运抗争,在学习Android的 ...

  9. Lua学习2 Lua小框架的搭建

    看了上一篇Lua环境搭建具体http://blog.csdn.net/liuwumiyuhuiping/article/details/9196435 为了方便学习. 具体新开始搭建一下学习的小框架. ...

  10. poj2728 Desert King --- 01分数规划 二分水果。。

    这题数据量较大.普通的求MST是会超时的. d[i]=cost[i]-ans*dis[0][i] 据此二分. 但此题用Dinkelbach迭代更好 #include<cstdio> #in ...