这一篇和上一篇获取手机联系人是一样的思路,首先我们先来看下效果图
这就是获取到手机里面的所有短信,包括号码、时间、是接受还是发送、内容,我的xml布局的根标签是用 SrollView,所以整个页面可以自动往下拉,
下面我们就来看看代码
package com.example.mycontentresolver2;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Created by Administrator on 2017/2/21.
*/
public class SMSActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms);
TextView tv_sms= (TextView) findViewById(R.id.tv_sms);
ContentResolver cr = getContentResolver();
Cursor cursor=cr.query(Uri.parse("content://sms/"),null,null,null,null);
StringBuffer buffter=new StringBuffer();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while (cursor.moveToNext()){
String address=cursor.getString(cursor.getColumnIndex("address"));//获取短信的号码
String date=simpleDateFormat.format(new Date(cursor.getLong(cursor.getColumnIndex("date"))));//获取短信的日期
String body= cursor.getString(cursor.getColumnIndex("body"));//获取短信内容
int type= cursor.getInt(cursor.getColumnIndex("type"));//获取类型,看是否是接收还是发送
String typeStr="";
if(type==1){
typeStr="接收";
}else if(type==2){
typeStr="发送";
}else{
typeStr=null;
}
buffter.append(address+":\t\t"+date+":\t\t"+typeStr+":\t\t"+body+"\r\n\n");//拼接短信内容
Log.i("test",address+" "+body+" "+type);
}
tv_sms.setText(buffter.toString()); //把所有内容发到xml的TextView
}
}
最后还要记得加读取短信的权限:
<uses-permission android:name="android.permission.READ_SMS"></uses-permission> <uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>