android获取短信电话信息

  
  
package com.example.administrator.android_jiewen;
import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri;
                            获取电话号码联系人ming名字

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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 MainActivity extends AppCompatActivity {

    private ContentResolver cr;
    private ListView lt_main_id;
    private List<Map<String, Object>> date;
    private SimpleAdapter simpleAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       //获取内容访问者
        cr = getContentResolver();

        lt_main_id =(ListView) findViewById(R.id.lt_main_id);
        date = new ArrayList<Map<String, Object>>();
        //适配器
        simpleAdapter = new SimpleAdapter(this,date,android.R.layout.simple_list_item_2,new String[]{"names","phones"},new int[]{android.R.id.text1,android.R.id.text2});
       lt_main_id.setAdapter(simpleAdapter);





    }

    public void getDate(View view) {
        //获取联系人的id和姓名路径
        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
        Cursor Cursor = cr.query(uri, null, null, null, null);
        while (Cursor.moveToNext()) {
            Map<String, Object> map = new HashMap<String, Object>();
            int n = Cursor.getInt(Cursor.getColumnIndex("_id"));
            String name = Cursor.getString(Cursor.getColumnIndex("display_name"));
          //  String address=Cursor.getString(Cursor.getColumnIndex("address"));
            Log.i("test", n + "" + name);
            map.put("names", name);
          //  map.put("names",address);
           //根据联系人的id获得联系人的信息)
            Uri uri2 = Uri.parse("content://com.android.contacts/raw_contacts/"+n+"/data");
            Cursor Cursor2 = cr.query(uri2, null, null, null, null);
            while (Cursor2.moveToNext()) {
                //int n2=  Cursor2.getInt(Cursor2.getColumnIndex("mimetype_id"));
               // String data1 = Cursor2.getString(Cursor2.getColumnIndex("data1"));
                String s2 = Cursor2.getString(Cursor2.getColumnIndex("mimetype"));
                String data1=null;
                if("vnd.android.cursor.item/phone_v2".equals(s2)){
                    Log.i("test","fff");
                    data1=Cursor2.getString(Cursor2.getColumnIndex("data1"));
                    Log.i("test", data1 + "" + s2);
                    map.put("phones", data1);
                }

            }

            date.add(map);
        }
        //通知适配器发生改变
       simpleAdapter.notifyDataSetChanged();


    }

图片如下;

     
 
               
 
 
权限:电话号码
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
      短信:
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
短信实现代码如下:
package com.example.administrator.android_jiewen;

import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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;

/**
 * Created by Administrator on 2017/2/21 0021.
 */

public class MainActivity02 extends AppCompatActivity {


    private ContentResolver cr;
    private ListView lv_main_id;
    private List<Map<String, Object>> data;
    private SimpleAdapter simpleAdapter;

    @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main02);

                cr = getContentResolver();
                lv_main_id = (ListView) findViewById(R.id.lv_main_id);
                 data = new ArrayList<Map<String, Object>>();
                 simpleAdapter = new SimpleAdapter(this,data,android.R.layout.simple_list_item_2,new String[]{"names","phones"},new int[]{android.R.id.text1,android.R.id.text2});
                 lv_main_id.setAdapter(simpleAdapter);


                  cr=getContentResolver();



                }
              public void getDate(View view){
                Uri uri= Uri.parse("content://sms/");

                Cursor Cursor= cr.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);
                         data.add(map);
                          simpleAdapter.notifyDataSetChanged();



                      }
                  }

              }


}
sms主要结构:
  
  _id:短信序号,如100
  
  thread_id:对话的序号,如100,与同一个手机号互发的短信,其序号是相同的
  
  address:发件人地址,即手机号,如+86138138000
  
  person:发件人,如果发件人在通讯录中则为具体姓名,陌生人为null
  
  date:日期,long型,如1346988516,可以对日期显示格式进行设置
  
  protocol:协议0SMS_RPOTO短信,1MMS_PROTO彩信
  
  read:是否阅读0未读,1已读
  
  status:短信状态-1接收,0complete,64pending,128failed
  
  type:短信类型1是接收到的,2是已发出
  
  body:短信具体内容
  
  service_center:短信服务中心号码编号,如+8613800755500
图片如下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值