`
seya
  • 浏览: 362319 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

从SIM卡读取联系人

 
阅读更多


package com.android.test; 





002

   





003

import android.app.Activity; 





004

import android.content.Context; 





005

import android.content.Intent; 





006

import android.database.Cursor; 





007

import android.net.Uri; 





008

import android.os.Bundle; 





009

import android.telephony.TelephonyManager; 





010

import android.widget.TextView; 





011

   





012

public class PhoneTest extends Activity { 





013

    private TextView mTextView; 





014

    protected Cursor mCursor = null; 





015

    private TelephonyManager mTelephonyManager; 





016

    private String mString = ""; 





017

       





018

    /** Called when the activity is first created. */





019

    @Override





020

    public void onCreate(Bundle savedInstanceState) { 





021

        super.onCreate(savedInstanceState); 





022

        setContentView(R.layout.main); 





023

        mTextView = (TextView)findViewById(R.id.text); 





024

        mTextView.setTextSize(20.3f); 





025

        isSimExist(); 





026

        if(getSimState() == TelephonyManager.SIM_STATE_READY){ 





027

            mString += "    卡存在\n"; 





028

            getSimContacts("content://icc/adn"); //一般用这一条,如果这条不行的话可以试试下面的一条。 





029

            getSimContacts("content://sim/adn");//此种读法在我们手机里不能读取,所以,还是用上个uri比较好。 





030

        } 





031

        mTextView.setText(mString); 





032

    } 





033

       





034

    private void getSimContacts(String str){ 





035

        Intent intent = new Intent(); 





036

        intent.setData(Uri.parse(str)); 





037

        Uri uri = intent.getData(); 





038

        mCursor = getContentResolver().query(uri, null, null, null, null); 





039

        if(mCursor == null){ 





040

            mString += "不能从" + str + "读数据\n"; 





041

            return ; 





042

        } 





043

        mString += "第一列:" + mCursor.getColumnName(0) + "\n"; 





044

        mString += "第二列:" + mCursor.getColumnName(1) + "\n"; 





045

        mString += "第三列:" + mCursor.getColumnName(2) + "\n"; 





046

        mString += "第四列:" + mCursor.getColumnName(3) + "\n"; 





047

        mString += "列数:" + mCursor.getColumnCount() + "\n"; 





048

        mString += "行数:" + mCursor.getCount() + "\n"; 





049

        if (mCursor != null) { 





050

            while (mCursor.moveToNext()) { 





051

                // 取得联系人名字 





052

                int nameFieldColumnIndex = mCursor.getColumnIndex("name"); 





053

                mString += mCursor.getString(nameFieldColumnIndex)+"    "; 





054

                // 取得电话号码 





055

                int numberFieldColumnIndex = mCursor 





056

                        .getColumnIndex("number"); 





057

                mString += mCursor.getString(numberFieldColumnIndex)+"    "; 





058

                // 取得邮箱 





059

                int emailsFieldColumnIndex = mCursor 





060

                        .getColumnIndex("emails"); 





061

                mString += mCursor.getString(emailsFieldColumnIndex)+"    "; 





062

                // 取得id 





063

                int idFieldColumnIndex = mCursor 





064

                        .getColumnIndex("_id"); 





065

                mString += mCursor.getString(idFieldColumnIndex)+"\n"; 





066

            } 





067

        } 





068

        mString += mCursor + "\n"; 





069

        mCursor.close(); 





070

    } 





071

       





072

    private int getSimState(){ 





073

        return mTelephonyManager.getSimState(); 





074

    } 





075

       





076

    private void isSimExist(){ 





077

        mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 





078

         int simState = mTelephonyManager.getSimState(); 





079

   





080

         switch (simState) { 





081

   





082

             case TelephonyManager.SIM_STATE_ABSENT: 





083

                 mString = "无卡"; 





084

                 // do something 





085

                 break; 





086

   





087

             case TelephonyManager.SIM_STATE_NETWORK_LOCKED: 





088

                 mString = "需要NetworkPIN解锁"; 





089

                 // do something 





090

   





091

                 break; 





092

   





093

             case TelephonyManager.SIM_STATE_PIN_REQUIRED: 





094

                 mString = "需要PIN解锁"; 





095

                 // do something 





096

                 break; 





097

   





098

             case TelephonyManager.SIM_STATE_PUK_REQUIRED: 





099

                 mString = "需要PUN解锁"; 





100

                 // do something 





101

                 break; 





102

   





103

             case TelephonyManager.SIM_STATE_READY: 





104

                 mString = "良好"; 





105

                 // do something 





106

                 break; 





107

   





108

             case TelephonyManager.SIM_STATE_UNKNOWN: 





109

                 mString = "未知状态"; 





110

                 // do something 





111

                 break; 





112

         } 





113

         mTextView.setText(mString); 





114

    } 





115

       





116

}

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> 
分享到:
评论

相关推荐

    vc开发读取手机sim卡联系人源代码

    vc开发读取手机sim卡联系人源代码,方便大家下载,不要资源分。

    SIM卡数据读取Dome

    电话簿通常存储在SIM卡的EF(Elementary File)中,特别是EF_ADN(Abbreviated Dialling Numbers)文件,它包含了联系人的姓名和电话号码。短信则储存在SIM卡的SMS EF文件中,每个短消息都有一个特定的记录号。通过...

    Android获取手机通讯录、sim卡联系人及调用拨号界面方法

    `READ_CONTACTS`权限用于读取联系人,而`CALL_PHONE`权限则是用来拨打实际电话的。 总结来说,Android开发中获取手机通讯录和SIM卡联系人信息,以及调用拨号界面,主要是通过Content Resolver查询系统提供的Content...

    android 关于电话本技术汇总

    最后,`IccProvider.java`从SIM卡读取联系人信息,并由`ContactsProvider2.java`将其保存到本地数据库,供用户查询和管理。 系统内部加载联系人则涉及到SIM卡记录类`SIMRecords.java`,其中`AdnRecordCache`对象...

    mobile下用c#获得联系人包括SIM卡联系人号码

    在实际应用中,确保捕获可能的异常,例如权限问题、无SIM卡或者SIM卡联系人无法读取等: ```csharp try { // 上述代码 } catch (UnauthorizedAccessException ex) { Console.WriteLine("无权限访问联系人:{0}", ...

    C#写的sim卡与WM6联系人互操作程序

    C#程序通过调用Windows Mobile API,可以读取SIM卡上的联系人信息,并将其导入到设备的联系人列表中。反之,也可以将设备中的联系人导出到SIM卡上。这个功能对于用户在不同设备间同步联系人或者备份联系人信息非常...

    iPhone从sim卡中导入联系人.pdf

    标题中的“iPhone从SIM卡中导入联系人”指的是在更换新iPhone或初次使用iPhone时,如何将SIM卡上的联系人转移到新设备上。这个过程对于许多用户来说是至关重要的,因为联系人信息是我们日常生活和工作中不可或缺的...

    sim卡查询软件

    SIM卡,全称为Subscriber Identity Module(用户身份模块),是移动通信设备中不可或缺的部分,它存储了用户的识别信息、联系人、短信等重要数据。SIM卡查询软件的使用通常涉及到以下几个关键知识点: 1. **SIM卡...

    sim卡管理程序

    3. **编辑与管理**:允许用户修改SIM卡上的联系人信息,删除不再需要的记录,或者整理电话簿。 4. **安全保护**:可能包含密码保护机制,防止未经授权的访问和修改SIM卡数据。 5. **数据迁移**:在更换手机或SIM卡时...

    GPS定位 SIM信息读取

    至于联系人,虽然联系人数据通常存储在手机的内置存储中,但有些旧款或特定的SIM卡可能支持存储少量联系人,这可以通过ContentResolver和ContactsContract类来读取。 在安全方面,读取SIM信息需要相应的权限,例如...

    基于android获取手机通讯录的实战应用(含SIM卡中的联系人)程序源码+文档.zip

    本实战应用涵盖了从Android系统中读取联系人信息,包括存储在SIM卡上的联系人,提供了完整的源码和相关文档,帮助开发者快速理解和实现这一功能。 首先,我们要了解Android系统的联系人存储机制。Android将联系人...

    Sim.zip_sim_sim 卡_sim卡

    当用户插入SIM卡到移动设备中,设备会通过SIM卡读取IMSI号,然后通过无线网络发送给运营商。运营商通过这个IMSI号来确认用户的身份,允许其接入网络。此外,SIM卡还负责加密和解密通信数据,确保数据传输的安全性。...

    三星P7500不能显示SIM卡上存储的联系人.docx

    可以尝试在其他设备上使用SIM卡,看是否能够读取联系人,以确认SIM卡是否损坏。如有必要,联系运营商进行SIM卡更换或维修。 总的来说,解决三星P7500无法显示SIM卡上存储的联系人的问题通常涉及检查硬件连接、软件...

    Android4.X读取SIM卡短信和联系人相关类实例分析

    在Android 4.X系统中,开发人员经常需要访问和操作SIM卡中的短信和联系人信息。本文将深入探讨两个关键的Android类:`IccSmsInterfaceManager`和`IccPhoneBookInterfaceManagerProxy`,它们是实现这些功能的核心。 ...

    android写sim卡短信

    这些操作可能包括读取联系人列表,添加新的联系人,更新已有的联系人信息,或者删除特定的联系人。 对于短信的操作,Android系统提供了`SmsManager`类,但其主要用于操作手机内存中的短信,而不是SIM卡上的短信。...

    SIM卡文件备份软件

    SIM卡,全称为Subscriber Identity Module(用户身份模块),是移动通信设备中的一个重要组件,它存储了用户的个人识别号码(PIN)、国际移动用户识别码(IMSI)以及联系人和短信等数据。在没有备份的情况下,如果...

    智能卡读写工具 SIM卡工具

    1. **读取SIM卡信息**:可以读取SIM卡上的联系人、短信、通话记录等数据。这些信息对于备份和迁移至关重耍,尤其是当更换新手机时。 2. **写入SIM卡**:允许用户将新的联系人、短信等内容写入SIM卡,方便在不同设备...

    SIM卡管理器

    SIM卡管理器,可以用来管理sim卡,读取相关sim联系人资料等

    最新sim卡读卡器驱动

    当插入SIM卡时,读卡器会读取卡上的集成电路芯片,该芯片存储了用户的身份信息、联系人、短信、网络设置等数据。驱动程序则作为中间桥梁,将这些操作转化为计算机可以理解和执行的指令。 "Driver Installer.exe" 是...

Global site tag (gtag.js) - Google Analytics