通过ContentProvider实现获取手机中的短息内容

来源:互联网 发布:显卡驱动升级软件 编辑:程序博客网 时间:2024/04/28 17:09

以下是我通过ContentProvider实现的获取的手机中的短息内容和发送人的电话号码,通过ListView遍历了短信的内容

首先展示下获取的短信内容
这里写图片描述

在清单文件中配置获取的短信的权限

<!--读取手机短信权限-->    <uses-permission android:name="android.permission.READ_SMS"></uses-permission>    <uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>

activity_message.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_message"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.g150825_resolver.MessageActivity">  <Button      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:onClick="readSMS"      android:text="读取手机短信"      />  <ListView      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:id="@+id/lv_main_list"      >  </ListView></LinearLayout>

MessageActivity.java

package com.example.g150825_resolver;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.util.Log;import android.view.View;import android.widget.ListView;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MessageActivity extends AppCompatActivity {    private ListView lv_main_list;    private SimpleAdapter sa;    private List<Map<String, Object>> data;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_message);        //得到ListView        lv_main_list = (ListView) findViewById(R.id.lv_main_list);        data =new ArrayList<Map<String,Object>>();       //配置适配置器S        sa = new SimpleAdapter(this,data,android.R.layout.simple_list_item_2,new String[]{"names","message"},new int[]{android.R.id                .text1,android.R.id.text2});        lv_main_list.setAdapter(sa);    }    public void readSMS(View view) {        //读取所有短信        Uri uri=Uri.parse("content://sms/");        ContentResolver resolver = getContentResolver();        Cursor cursor = resolver.query(uri, new String[]{"_id", "address", "body", "date", "type"}, null, null, null);        if(cursor!=null&&cursor.getCount()>0){            int _id;            String address;            String body;            String date;            int type;            while (cursor.moveToNext()){                Map<String, Object> map=new HashMap<String, Object>();                _id=cursor.getInt(0);                address=cursor.getString(1);                body=cursor.getString(2);                date=cursor.getString(3);                type=cursor.getInt(4);                map.put("names",body);                Log.i("test","_id="+_id+" address="+address+" body="+body+" date="+date+" type="+type);                data.add(map);                //通知适配器发生改变                sa.notifyDataSetChanged();            }        }    }}

以上是简单的获取手机短信内容的代码,有其他意见的,可以一起交流

2 0