您的位置:首页 > 移动开发 > Android开发

Android 四大组件学习之ContentProvider三

2015-07-24 11:29 471 查看
上节课学习如何自己创建一个ContentProvider,以及用ContentResolver去操作ContentProvider。

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

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



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



既然已经分析好了,我们需要什么,不需要什么。 当然还需要知道短信提供者给第三方的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。 读取系统短信就算是简单的完成了。 接着我们往系统中写一条短信

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

代码如下:

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);
}
});

结果如下:



可以看到数据库中已经有信插入的信息,同时对话框中也出现了。 所以插入短信就搞定了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息