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. 移动web开发

    在现代网页开发中,新增了一个移动设备网页开发,在这样的需求下,你需要考虑如何将移动web和pc web同步处理 /* * 浏览器如何识别移动设备 * */ var ua = navigator.use ...

  2. 通过 IP 访问谷歌

    最近貌似谷歌都不能访问,对于我等经常使用谷歌的人说不是件好事,毕竟谷歌比百度专业,好在有解决办法: 1. 找到文件:C:\Windows\System32\drivers\etc\hosts 2. 把 ...

  3. 网站linux.linuxidc.com有很多好资料

    免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 有一些介绍:www.linuxidc.com/download

  4. 项目从Codeigniter 2.2升级至 Codeigniter 3.0的一些注意事项

    1. 替换掉system目录下所有的文件和文件夹,以及替换掉index.php 2. controllers和models中的文件首字母都需要改成大写:application.php -> Ap ...

  5. CakePHP 2.x 升级3.0

    CakePHP 2.x => 3.x 升级手顺 一.Controller层 1.find('list') 原2.x中该方法通过指定option中的'fields'来实现key=>value ...

  6. [Python]豆瓣用户读书短评下载工具

    简介 朋友问我能不能做一个下载他在豆瓣读书上的短评的工具,于是就做了这个“豆瓣用户读书短评下载工具”. GitHub链接:https://github.com/xiaff/dbc-downloader ...

  7. 括号匹配算法 C语言实现

    #include <stdio.h> #include <malloc.h> //malloc,realloc #include <math.h> //含有over ...

  8. 2.java.lang.NullPointerException(空指针异常)

    调用了未经初始化的对象或者是不存在的对象 经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等.对数组操作中出现空指针, 即把数组的初始化和数组元素的初始化混淆起来 ...

  9. 详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus

    [大伽说]如何运维千台云服务器 »   CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.L ...

  10. IE添加信任站点并设置允许ActiveX控件的VBS脚本

    Set objFSO = CreateObject("Scripting.FileSystemObject") Set WSHShell = CreateObject(" ...