ContentProvider:

实现一组通用的数据和方法的储存和共享,通常是通过getContentResolver()方法来获得Activity或其他应用程序组件中的ContentProvider对象,开发人员一般不直接使用ContentProvider类的对象,而每个ContentProvider都仅有一个单独的实例,和多个不同进程之间的通信有ContentProvider类和getContentReseolver()方法来配合处理。

ContentProvider的使用方法:

1.新建一个ContentProvider类,重写构造方法,insert,delete,getType,onCreate,query,update等方法(根据需要来自行决定重写那些方法)

2.为程序添加一个public static final Uri URI = "content://+<包名>+URIName"静态常量,其他程序通过这个URI来调用此ContentProvider类中的数据

3.为实现数据的存储和读取,起码需要重写onCreate和insert,query方法,下面是重写的具体代码:

public static final  Uri URI  = Uri.parse("content://andrew.com.contentproviderdemo
.MyContentProviderURI");
SQLiteDatabase database; @Override
public Uri insert(Uri uri, ContentValues values) {
database.insert("tab","name",values);
return null;
} @Override
public boolean onCreate() {
database = getContext().openOrCreateDatabase("mycp.db3", Context.MODE_PRIVATE,null); //这段创建数据库的代码,在执行第一次的时候没有问题
  //如果第二次运行,会出现错误,解释是说这个要创建的数据库已经存在
  //但在使用Sqiliteopenhelper中写出这样的语句,却不会出现这种错误,有可能这是因为sqliteopenhelper
  //里面已经解决
  //由于暂时简化这种错误的处理时间,采用的办法是运行一遍,成功创建数据库后将代码注释掉
  //这样就能解决数据库已经存在的问题
  database.execSQL("CREATE TABLE tab("+
"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name TEXT DEFAULT \"\")");
return true;
} @Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor cursor = database.query("tab",null,null,null,null,null,null);
return cursor;
}

提供共享的ContentProvider成功运行后;在另外的程序中读取该ContentProvider的信息的代码实现:

Uri URI = Uri.parse("content://andrew.com.contentproviderdemo.MyContentProviderURI");
Cursor cursor = getContentResolver().query(URI,null,null,null,null); for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
  String value = cursor.getString(cursor.getColumnIndex("name"));
Toast.makeText(getApplicationContext(),value,Toast.LENGTH_SHORT).show();
}

注:ContentProvider需要在manifests中注册相关信息:

<provider
android:name=".MyContentProvider"
android:authorities="andrew.com.contentproviderdemo.MyContentProviderURI"
android:enabled="true"
android:exported="true">
</provider>

使用ContentProvider实现多应用的数据共享的更多相关文章

  1. Android 学习笔记之ContentProvider实现数据共享....

    PS:最近听老师说打算让我参与企业的app制作,让我加快学习的进度...好吧,貌似下周还有考试...貌似实验室这个app也要做...暂时不管了...那就只能加快进度了,感觉略微的有点激动和紧张,总算是 ...

  2. ContentProvider域名替换小工具

    开发项目域名想怎么换就怎么换,就是这么任性! 这是一个很有意思的小工具! 这是一个方便开发人员和测试人员的小工具!! 吐槽: 一直在做Android开发,一直总有一个问题存在:做自己公司的apk开发时 ...

  3. Android基础 : Android ContentProvider

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

  4. Android四大核心组件之ContentProvider

    实验内容 学习ContextProvider用法 编码实现简单ContextProvider功能 实验要求 通过简单代码了解ContextProvider功能和用法 实验步骤 ContextProvi ...

  5. 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

    1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...

  6. ContentProvider总结

    一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给 ...

  7. Android开发数据存储之ContentProvider详解

    转载:十二.ContentProvider和Uri详解 一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可 ...

  8. Android ContentProvider和Uri详解 (绝对全面)

        ContentProvider的基本概念 : 1.ContentProvider为存储和读取数据提供了统一的接口 2.使用ContentProvider,应用程序可以实现数据共享 3.andr ...

  9. Android开发之ContentProvider的简单使用

    ContentProvider,内容提供者 官网结构图: 作为四大组件之一的ContentProvider,主要是用于应用间数据共享使用的. ContentProvider把应用的数据封装起来,然后提 ...

随机推荐

  1. 一款非常不错的重写listctrl类-CListCtrlEx

    原文在:https://www.codeproject.com/Articles/28063/An-Extended-MFC-CListCtrl-to-edit-individual-cells li ...

  2. java面向对象编程(六)--四大特征之继承

    本文将介绍继承.方法重载和方法覆盖.其中方法重载和方法覆盖是在讲多态时必须要清楚的一个知识点. 一.继承 1.继承的概念 继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变 ...

  3. 剑指Offer 35. 数组中的逆序对 (数组)

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  4. iOS动画学习

    学习一下动画,感谢以下大神的文章:    UIView:基础动画.关键帧动画.转场动画 Core Animation :基础动画,关键帧动画,动画组,转场动画,逐帧动画 CALayer :CALaye ...

  5. Spell checker using hash table

    Problem description Given a text file, show the spell errors from it.  (https://www.andrew.cmu.edu/c ...

  6. iOS 添加第三方字体

    有时候根据UI的设计,我们需要添加第三方字体到工程中,实现特殊的效果. 一,把第三方字体包导入工程 二,在info.plist文件中添加Fonts provided by application 类型 ...

  7. Gym101889B. Buggy ICPC(打表)

    比赛链接:传送门 题目: Problem B – Buggy ICPC Author : Gabriel Poesia, Brasil Alan Curing is a famous sports p ...

  8. 记一次php脚本memory exhausted

    表象报错如下: Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16651985 bytes) 出 ...

  9. 三、tcp、ip协议详细

    1. 什么是 TCP/IP? TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等 ...

  10. 安装包安装npm

    在阿里云机器上centos7安装npm可以直接yum安装,然后基于镜像的时候安装不了,直接使用安装包安装,记录一下: 官网下载地址:https://nodejs.org/en/download/ #! ...