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();
}
图片如下;
![](https://img-blog.csdn.net/20170222091123249?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzc0NjU5MzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170222091026328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzc0NjU5MzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
权限:电话号码<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
图片如下
![](https://img-blog.csdn.net/20170222091525564?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzc0NjU5MzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)