添加权限
<uses-permission android:name=“android.permission.READ_PHONE_STATE”/>
//保存 sim 卡
TelephonyManager tm = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
//获取 sim 卡序列号
String simSerialNumber = tm.getSimSerialNumber();
Log.d("SetUp2Fm",simSerialNumber);
/*系统的通讯录的表存在data/data/com.android.providers.contacts/databases目录
*需要用3张表来查询联系人
*raw_contacts,保存-联系人,contact_id, 作为查询条件
*data,保存-电话号码,raw_contact_id 作为查询条件查询响应的电话号码和联系人
*mimetypes,保存-地址,姓名, email, 等等的Id,_id 作为查询条件,查询出具体的手机号码
*/
//代码,需要添加读取联系人权限,READ_CONTACT
package com.mobilesafe.hexl.activity.mobilesafe; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.widget.ListView; import android.widget.SimpleAdapter; import com.mobilesafe.hexl.R; import com.mobilesafe.hexl.base.AppBaseActivity; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; /** * Created by hexl on 16/7/4. * 选择联系人 */ public class SelectContactActivity extends AppBaseActivity { private ListView listView; @Override protected void bindLayout(Bundle savedInstanceState) { setContentView(R.layout.activity_contcat_listview); } @Override protected void initView() { listView = findViewId(R.id.listview); } @Override protected void initData() { List<Map<String, String>> maps = readContact(); Log.d("SelectContactActivity", "maps:" + maps); listView.setAdapter(new SimpleAdapter(this, readContact(), R.layout.item_contact, new String[]{"name", "phone"}, new int[]{R.id.name, R.id.phone})); } private List<Map<String, String>> readContact() { List<Map<String, String>> list = new ArrayList<>(); Uri rawUri = Uri.parse("content://com.android.contacts/raw_contacts");//获取contacts ID Uri dataUri = Uri.parse("content://com.android.contacts/data");// 获取联系人信息 Cursor rawQuery = getContentResolver().query(rawUri, new String[]{"contact_id"}, null, null, null); if (rawQuery != null) { while (rawQuery.moveToNext()) { String contact_id = rawQuery.getString(0); Log.d("MainActivity", contact_id); Cursor dataQuery = getContentResolver().query(dataUri, new String[]{"data1", "mimetype"}, "contact_id=?", new String[]{contact_id}, null); if (dataQuery != null) { Map<String, String> map = new HashMap<>(); while (dataQuery.moveToNext()) { String data1 = dataQuery.getString(0); String mimetype = dataQuery.getString(1); if (mimetype.equals("vnd.android.cursor.item/phone_v2")) { // Log.d("SelectContactActivity", "号码: " + data1); map.put("phone", data1); } if (mimetype.equals("vnd.android.cursor.item/name")) { map.put("name", data1); } } list.add(map); dataQuery.close(); } } rawQuery.close(); } return list; } }