上节课学习怎样自己创建一个ContentProvider。以及用ContentResolver去操作ContentProvider。

今天我们用系统提供的ContentProvider。 先来个简单的,读取系统的短信内容。

依据上节知道。既然要读取系统的短信,那就得先找到系统的短信在那里?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

先找到短信数据库所在的问题,然后导出,查看里面的内容

既然已经分析好了,我们须要什么,不须要什么。 当然还须要知道短信提供者给第三方的URL。

这个能够通过Android源代码查看。

那我们就写一个程序,读取系统中的短信

先看Activity中的代码:

public class ReadMessageActivity extends Activity {

	Button readMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_readmessage); readMessage = (Button)findViewById(R.id.button1);
readMessage.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
Log.i("ReadMessageActivity", "读取联系人按钮按下了"); ContentResolver cResolver = getContentResolver();
/**
* uri: 是短信提供者的url。能够通过查看源代码获得
* projection:须要查询的几个字段,关心那个查询按个即可
*/
Cursor cursor = cResolver.query(Uri.parse("content://sms"), new String[]{"address", "date", "type", "body"}, null, null, null);
while(cursor.moveToNext())
{
String address = cursor.getString(cursor.getColumnIndex("address"));
String date = cursor.getString(cursor.getColumnIndex("date"));
String type = cursor.getString(cursor.getColumnIndex("type"));
String body = cursor.getString(cursor.getColumnIndex("body")); Log.i("ReadMessageActivity", address + ";" + date + ";" + type + ";" + body);
} }
});
}
}

布局文件就一个button,不做详解

打印结果为:

ok。 读取系统短信就算是简单的完毕了。

接着我们往系统中写一条短信

我们再加一个插入短信的button。然后当按下时就插入一条短信:

代码例如以下:

		writeMessage.setOnClickListener(new OnClickListener() {

			@Override
public void onClick(View arg0) {
// 写短信button被按下 ContentResolver cResolver = getContentResolver(); ContentValues values = new ContentValues();
values.put("body", "对不起。您因为尾号为6789的手机号。欠费1w元,已停机! ");
values.put("address", 10086);
values.put("date", System.currentTimeMillis());
values.put("type", 1);
cResolver.insert(Uri.parse("content://sms"), values);
}
});

结果例如以下:

能够看到数据库中已经有信插入的信息,同一时候对话框中也出现了。 所以插入短信就搞定了。

最新文章

  1. GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台
  2. C#图片上传服务器缩放存储功能
  3. JavaScript跨域方法
  4. 原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0
  5. Codeforces Round #327 (Div. 1) B. Chip 'n Dale Rescue Rangers 二分
  6. 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
  7. hive0.11的编译/安装/配置
  8. wlan的QOS配置
  9. ARPU值分析
  10. [LeetCode] 70. Climbing Stairs_ Easy tag: Dynamic Programming
  11. 20155219付颖卓《网络对抗》Exp6 信息搜集与漏洞扫描
  12. (转)分享一个技巧,利用批处理调用ruby脚本(可能你为路径苦恼)
  13. Zookeeper-基本概念
  14. Nginx PRECONTENT try_files指令
  15. Java eclipse下 Ant build.xml实例详解 附完整项目源码
  16. qt离线下载
  17. ④ 设计模式的艺术-10.装饰(Decorator)模式
  18. 【HTML5】HTML5 WebSocket简介以及简单示例
  19. django执行过程
  20. 题解【luogu P2421 bzoj P1407 [NOI2002]荒岛野人】

热门文章

  1. nyoj--284--坦克大战(bfs模板)
  2. MongoDB索引05-30学习笔记
  3. Spring《八》AOP/代理类定义
  4. MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误
  5. Npgsql使用入门(二)【实用助手类】
  6. 介绍一个简单的Parser
  7. [翻译]内存一致性模型 --- memory consistency model
  8. Oracle中的SAVEPOINT
  9. Qwt--散点图/函数图
  10. children ie8下获取错误