找了好久终于可以读取SIM通讯录了

美中不足的是 读取到的数据 也包含了 手机通讯录的数据

不管怎么样 总算是 读到了数据

再把手机通讯录的数据过滤掉就好了

类 Sim

package com.contact.phone;

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.util.Log;

@SuppressWarnings("unused")
public class Sim extends ListActivity {
 
 private String tag = "contact";
 private List<String> nameList = new ArrayList<String>();
 private List<String> mobileList = new ArrayList<String>();

@Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.phone_list);
  listSimMetadata();
  
  listSimContact();
  
  setListAdapter(new MyAdapter(Sim.this,nameList,mobileList));
 }

private void listSimContact(){
        Uri uri = Uri.parse("content://icc/adn");
        Cursor contacts =  managedQuery(uri , null , null , null , null);
        Log.d("contact", contacts.getCount()+"");
        while(contacts.moveToNext()){
      String name = contacts.getString(contacts.getColumnIndex("name"));
      String number = contacts.getString(contacts.getColumnIndex("number"));
      Log.d("contact" , name + " = " + number);
      nameList.add(name);
      mobileList.add(number);
        }
        contacts.close();
 }
 
 
 /**
  * 会把Sim卡和通讯录的数据全部读取出来
  * 重叠返回
  * 经测试 SIM卡内共有 _id,name,number,emails  四列数值
  * 需要权限
  * android.permission.READ_CONTACTS
  * android.permission.WRITE_CONTACTS
  * android.permission.READ_PHONE_STATE
  */
 private void listSimMetadata(){
//  Uri uri = Uri.parse("content://sim/adn");
        Uri uri = Uri.parse("content://icc/adn");
        Cursor contacts =  managedQuery(uri , null , null , null , null);

Log.d("contact", contacts.getCount()+"");
       
        while(contacts.moveToNext()){
         String [] columns = contacts.getColumnNames();
         for(int i = 0 ; i < columns.length ; i++){
          String key = contacts.getColumnName(i);
          String value = contacts.getString(contacts.getColumnIndex(key));
          Log.d("contact" , key + " = " + value);
         }
         Log.d("contact", "==========================================================");
        }
        contacts.close();
 }
}

类 MyAdapter

package com.sgf.contact.phone;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {

private LayoutInflater layoutInflater;
 private List<String> name;
 private List<String> mobile;

public MyAdapter(Context context, List<String> name, List<String> mobile) {
  layoutInflater = LayoutInflater.from(context);
  this.name = name;
  this.mobile = mobile;
 }

@Override
 public int getCount() {
  return name.size();
 }

@Override
 public Object getItem(int position) {
  return name.get(position);
 }

@Override
 public long getItemId(int position) {
  return position;
 }

@Override
 public View getView(int position, View convertView, ViewGroup par) {
  ViewHolder holder = null ;
  if (convertView == null) {
   convertView = layoutInflater.inflate(R.layout.row_layout, null);
   holder = new ViewHolder();
   holder.name = (TextView) convertView.findViewById(R.id.name);
   holder.mobile = (TextView) convertView.findViewById(R.id.mobile);
   convertView.setTag(holder);
  } else {
   holder = (ViewHolder) convertView.getTag();
  }
  
  holder.name.setText(name.get(position).toString());
  holder.mobile.setText(mobile.get(position).toString());
  return convertView;
 }

private class ViewHolder {
  TextView name;
  TextView mobile;
 }
}

布局文件 row_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="horizontal"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">

<TextView android:id="@+id/name"
  android:layout_width="100dip"
  android:layout_height="40px"
  android:layout_weight="1.0"
  android:textSize="18sp"
  android:textColor="#FFFF00"
  android:layout_gravity="right"
  />

<TextView android:id="@+id/mobile"
  android:layout_width="wrap_content"
  android:layout_height="40px"
  android:layout_gravity="center_horizontal"
  android:layout_weight="1.0"
  android:textSize="16sp"
  android:textColor="#008000"
  />
</LinearLayout>

布局文件 phone_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
 <ListView
  android:id="@android:id/list"
  android:layout_width="wrap_content"
  android:layout_height="fill_parent"
 ></ListView>
</LinearLayout>

读取SIM卡内通讯录 android相关推荐

  1. android如何读取sim卡联系人信息,Android上如何获取手机和sim卡的联系人信息

    需求很明确,获取手机和sim的联系人信息.接口设计也很简介 public interface OnFetchContactsListener { void onFetcherContactsCompl ...

  2. Android 系统(260)---Android 读取SIM卡参数

    Android 读取SIM卡参数 package com.water.activity; import java.util.List; import android.app.Activity; imp ...

  3. android获取sim卡手机号码,Android 读取SIM卡联系人

    Android 5.0之前的版本中,系统只支持单卡,可以使用URI -- content://icc/adn 读取到sim卡里的联系人.附:IccProvider(4.4.4_r1) Android ...

  4. android负责sim卡的应用,android读取sim卡联系人

    SIM的provider是IccProvider.既然是provider,就和操作Contact的provider类似的,只是有一些微小差别. IccProvider的Uri是content://ic ...

  5. Android读取SIM卡ICCID

    方法一,使用TelephonyManager的getSimSerialNumber()获取 TelephonyManager telephonyManager = (TelephonyManager) ...

  6. 读取SIM卡的状态、sim卡网络

    转: http://www.apkbus.com/forum.php?mod=viewthread&tid=12768&fromuid=3402 最近要用到读取联系人的功能,那么联系人 ...

  7. linux系统读sim卡信息,在Linux下使用串口读取SIM卡上的SMS消息使用C

    试图通过linux中的串口读取sms消息,从一张安装在华为3g USB调制解调器内的SIM卡读取.我必须在屏幕上显示一些短信之前执行脚本.有时它显示不寻常的字符.我想要做的就是使用AT命令,c和串行端 ...

  8. AT指令读取SIM卡的手机号

    使用AT命令读取本机号码的步骤 在使用AT+CNUM命令读取SIM卡的本机号码时,会发现有的SIM卡的本机号码能读出,而有的SIM卡的本机号码不能读出,不能读出的原因是SIM卡的本机号码未写入电话本存 ...

  9. android sim卡联系人存储格式,Android获取手机通讯录、sim卡联系人及调用拨号界面方法...

    android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...

最新文章

  1. 微软企业库4.1学习笔记(六)创建对象
  2. bzoj5039:[Jsoi2014]序列维护
  3. tomcat部署web應用時涉及到的基本概念
  4. Python时间库—datetime的详解及使用
  5. 用几何画板演示涡旋电场的方法
  6. 一个页面同时发起多个ajax请求,会出现阻塞情况
  7. 那些程序员身上共有的属性,这就是他为什么比你进步快的原因!
  8. 如何在CentOS上设置MariaDB Galera Cluster 10.0
  9. 49 - 算法 - 二叉树 - leetcode108.-将有序数组转换为二叉搜索树-中序遍历 - vector
  10. 微信小程序如何快速生成wxml,wxss,json,js目录文件
  11. asp文件上传原理及分析
  12. NLPIR分词系统的使用
  13. xmpp即时通讯协议的特性---优点和缺点!
  14. 微信小程序人脸识别认证-微信开放接口
  15. 回归分析beta值的标准_线性回归分析其中“β、 T 、F”分别是什么含义?
  16. 如何快速算出一个数的n次方?
  17. Blender软件介绍与使用心得
  18. mysql sql 列变成横向_SQL 统计 字段 竖向转横向 (行转列)显示
  19. frame切换、多窗口切换
  20. Eigen求特征值与特征向量

热门文章

  1. re 正则从文本中提取全球电话和邮箱
  2. ZIGZAG(之字折线)的力量(第一部分)。 开发指标基类
  3. Bluez移植到mini2440 .
  4. Microsoft Office InfoPath 2003 如何使用 XML 技术
  5. python以 划分语句块_Python使用符号____ 标示注释;以____划分语句块。_学小易找答案...
  6. frp使用systemctl来控制启动
  7. CRM管理系统如何选型?分别有什么作用?
  8. python web开发入门_python大佬整理的python web开发从入门到精通学习笔记
  9. qt槽函数如何传递多个参数_【Qt】信号和槽对值传递参数和引用传递参数的总结...
  10. 联邦学习论文笔记——FedFair: Training Fair Models In Cross-Silo Fedrated Learning