前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 四大组件学习之ContentProvider三

Android 四大组件学习之ContentProvider三

作者头像
DragonKingZhu
发布2022-05-08 16:07:41
2290
发布2022-05-08 16:07:41
举报

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

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

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

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

既然已经分析好了,我们需要什么,不需要什么。 当然还需要知道短信提供者给第三方的URL。这个可以通过Android源码查看。

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

先看Activity中的代码:

代码语言:javascript
复制
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。 读取系统短信就算是简单的完成了。 接着我们往系统中写一条短信

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

代码如下:

代码语言:javascript
复制
		writeMessage.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// 写短信按钮被按下
				
				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);
			}
		});

结果如下:

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档