内容提供

public class PersonContentProvider extends ContentProvider{

private static final String AUTHORITY = "com.itheima28.sqlitedemo.providers.PersonContentProvider";
 private static final int PRESON_INSERT_CODE = 0; // 操作person表添加的操作的uri匹配码

UriMatcher uriMatcher;

private PersonSQLiteOpenHelper mOpenHelper;

static{

uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

uriMatcher.addURI(AUTHORITY, "person/insert", PRESON_INSERT_CODE);

}

@Override
 public boolean onCreate() {
  mOpenHelper = new PersonSQLiteOpenHelper(getContext());
  return true;
 }

@Override
 public Uri insert(Uri uri, ContentValues values) {
  
  switch (uriMatcher.match(uri)) {
  case PRESON_INSERT_CODE: // 添加人到person表中
   SQLiteDatabase db = mOpenHelper.getWritableDatabase();
   
   if(db.isOpen()) {
    
    long id = db.insert("person", null, values);
    
    db.close();
    
    return ContentUris.withAppendedId(uri, id);
   }
   break;
  default:
   throw new IllegalArgumentException("uri不匹配: " + uri);
  }
  return null;
 }

}

UriMatcher

内容访问

ContentResolver resolver = getContext().getContentResolver();

uri = resolver.insert(uri, values);

int count = resolver.delete(uri, where, selectionArgs);

int count = resolver.update(uri, values, "_id = ?", new String[]{"20"});

Cursor cursor = resolver.query(uri, new String[]{"_id", "name", "age"}, null, null, "_id desc");

内容监听

resolver.registerContentObserver(Uri.parse("content://sms/"), true, new MyContentObserver(new Handler()));   //注册内容监听

class MyContentObserver extends ContentObserver {

private static final String TAG = "MyContentObserver";

public MyContentObserver(Handler handler) {

super(handler);

}

/**    * 当被监听的内容发生改变时回调    */

@Override

public void onChange(boolean selfChange) {

Log.i(TAG, "短信改变了");

Uri uri = Uri.parse("content://sms/outbox"); // 发件箱的uri        // 查询发件箱的内容

Cursor cursor = getContentResolver().query(uri, new String[]{"address", "date", "body"}, null, null, null);

if(cursor != null && cursor.getCount() > 0) {          String address;     long date;     String body;

while(cursor.moveToNext()) {      address = cursor.getString(0);      date = cursor.getLong(1);      body = cursor.getString(2);

Log.i(TAG, "号码: " + address + ", 日期: " + date + ", 内容: " + body);     }

cursor.close();

}   }  }

ContentProvider ContentResolver ContentObserver 内容:提供、访问、监听的更多相关文章

  1. Android短信监听(二)——利用ContentObserver实现短信监听

    MainActivity例如以下: package cc.testsmslistener; import cc.testsmslistener.SMSContentObserver.MessageLi ...

  2. 百度编辑器的内容改变事件监听bug

    先贴上我的初始化代码,可能是用法问题冤枉了百度编辑器,如果是我的用法有问题欢迎大侠们指正 <!DOCTYPE type> <html> <head> <met ...

  3. input输入框内容变化实时监听

    js实现的文本框内容发生改变立马触发事件简单介绍:本章节介绍一下如何在文本框的内容发生变化的时候,立马触发一个事件执行响应的操作,而不是像是keydown或者keyup事件一样,只能够检测通过键盘输入 ...

  4. Android简易实战教程--第二十一话《内容观察者监听数据库变化》

    当数据库的数据发生改变,我们又想知道具体改变的情况时,就需要对数据库的变化情况做一个监控.这个任务,就由内容观察者来完成.下面这个案例,为短信数据库注册内容观察者,来监控短信的变化情况,当短信数据库发 ...

  5. edittext 监听内容变化

    给EditText追加ChangedListener可以监听EditText内容变化的监听 如图是效果图  类似于过滤的一种实现 1  布局也就是一个EditText,当EditText内容发生变化时 ...

  6. Android EditText内容监听

    监听 EditText的内容变化,作出对应的处理. MainActivity.class package com.example.edittextdemo; import android.app.Ac ...

  7. Spring DM所提供的Bundle监听接口OsgiBundleApplicationContextListener

    通过使用Spring DM提供的监听接口,我们可以更好的对服务进行管控,其实该接口也非常简单就能使用上,只要自定义一个类实现OsgiBundleApplicationContextListener接口 ...

  8. 时时监听input内容的改变

    心得:我们都知道input有一个change事件,但是是在input元素失去焦点的时候发生,不能时时的监听input内容的改变. 刚开始的时候我是想用setInterval设置计时器的原理定时监听in ...

  9. Android短信监听实现,及Android4.4之后短信机制变更

    前阵子公司有一个项目,简单的监听短信应用,功能只有如下两个: 1.监听短信并获取短信内容上传服务器: 2.从服务器获取短信内容,发送出去    按照传统的思路,监听短信我们有两种方式:第一种是使用广播 ...

随机推荐

  1. input 数值框处理

    <input type="text"> input  若设置type=“number” ,再想对其调用处理的函数是不起作用的,为此,首先将其设为文本类型 当前要求是数字 ...

  2. 给服务器做pve系统(可以通过web管理物理机集群资源与虚拟机)

    做此系统前,可以先进入bios,设置一下ipmi的网络地址.可以远程管理服务器 输入服务器的ipmi里面配置的ip 默认账号与密码admin 点击launch 会自动下载认证文件 下载好java软件环 ...

  3. 吴裕雄--天生自然JAVA数据库编程:使用JDBC连接ORACLE数据库

    DROP TABLE person ; DROP SEQUENCE myseq ; CREATE SEQUENCE myseq ; CREATE TABLE person ( id INT PRIMA ...

  4. Spring中获取web项目的根目录

    spring 在 org.springframework.web.util 包中提供了几个特殊用途的 Servlet 监听器,正确地使用它们可以完成一些特定需求的功能; WebAppRootListe ...

  5. springboot自定义属性文件与bean映射注入属性值

    主要有几点: 一.导入依赖 springboot的包和: <dependency> <groupId>org.springframework.boot</groupId& ...

  6. Arch系统软件列表

    1. 安装统计 2. 安装列表 3. 安装说明 4. 作为依赖项的安装列表 5. 更正 mangaro使用减的方式安装系统.开箱即用的豪华版本,大部分人需要的都有了,同样包括个别用户不需要的,配置方面 ...

  7. 016.CI4框架CodeIgniter数据库操作之:Insert插入一条数据

    01.在Model中,写入插入的语句 <?php namespace App\Models\System; use CodeIgniter\Model; class User_model ext ...

  8. UVA 12510/CSU 1119 Collecting Coins DFS

    前年的省赛题,难点在于这个石头的推移不太好处理 后来还是看了阳神当年的省赛总结,发现这个石头这里,因为就四五个子,就暴力dfs处理即可.先把石头当做普通障碍,进行一遍全图的dfs或者bfs,找到可以找 ...

  9. 04 MySQL数据类型

    MySQL支持的数据类型   1.数值类型:       a.整数类型    TINYINT 1字节 有符号(-128~127); 无符号(0~255) SMALLINT 2字节  有符号(-3276 ...

  10. Acwing200 Hankson的趣味题

    原题面:https://www.acwing.com/problem/content/202/ 题目大意:gcd(x,a0)=a1,lcm(x,b0)=b1,问你有多少满足条件的正整数x. 输入描述: ...