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卡联系人源代码,方便大家下载,不要资源分。
电话簿通常存储在SIM卡的EF(Elementary File)中,特别是EF_ADN(Abbreviated Dialling Numbers)文件,它包含了联系人的姓名和电话号码。短信则储存在SIM卡的SMS EF文件中,每个短消息都有一个特定的记录号。通过...
`READ_CONTACTS`权限用于读取联系人,而`CALL_PHONE`权限则是用来拨打实际电话的。 总结来说,Android开发中获取手机通讯录和SIM卡联系人信息,以及调用拨号界面,主要是通过Content Resolver查询系统提供的Content...
最后,`IccProvider.java`从SIM卡读取联系人信息,并由`ContactsProvider2.java`将其保存到本地数据库,供用户查询和管理。 系统内部加载联系人则涉及到SIM卡记录类`SIMRecords.java`,其中`AdnRecordCache`对象...
在实际应用中,确保捕获可能的异常,例如权限问题、无SIM卡或者SIM卡联系人无法读取等: ```csharp try { // 上述代码 } catch (UnauthorizedAccessException ex) { Console.WriteLine("无权限访问联系人:{0}", ...
C#程序通过调用Windows Mobile API,可以读取SIM卡上的联系人信息,并将其导入到设备的联系人列表中。反之,也可以将设备中的联系人导出到SIM卡上。这个功能对于用户在不同设备间同步联系人或者备份联系人信息非常...
标题中的“iPhone从SIM卡中导入联系人”指的是在更换新iPhone或初次使用iPhone时,如何将SIM卡上的联系人转移到新设备上。这个过程对于许多用户来说是至关重要的,因为联系人信息是我们日常生活和工作中不可或缺的...
SIM卡,全称为Subscriber Identity Module(用户身份模块),是移动通信设备中不可或缺的部分,它存储了用户的识别信息、联系人、短信等重要数据。SIM卡查询软件的使用通常涉及到以下几个关键知识点: 1. **SIM卡...
3. **编辑与管理**:允许用户修改SIM卡上的联系人信息,删除不再需要的记录,或者整理电话簿。 4. **安全保护**:可能包含密码保护机制,防止未经授权的访问和修改SIM卡数据。 5. **数据迁移**:在更换手机或SIM卡时...
至于联系人,虽然联系人数据通常存储在手机的内置存储中,但有些旧款或特定的SIM卡可能支持存储少量联系人,这可以通过ContentResolver和ContactsContract类来读取。 在安全方面,读取SIM信息需要相应的权限,例如...
本实战应用涵盖了从Android系统中读取联系人信息,包括存储在SIM卡上的联系人,提供了完整的源码和相关文档,帮助开发者快速理解和实现这一功能。 首先,我们要了解Android系统的联系人存储机制。Android将联系人...
当用户插入SIM卡到移动设备中,设备会通过SIM卡读取IMSI号,然后通过无线网络发送给运营商。运营商通过这个IMSI号来确认用户的身份,允许其接入网络。此外,SIM卡还负责加密和解密通信数据,确保数据传输的安全性。...
可以尝试在其他设备上使用SIM卡,看是否能够读取联系人,以确认SIM卡是否损坏。如有必要,联系运营商进行SIM卡更换或维修。 总的来说,解决三星P7500无法显示SIM卡上存储的联系人的问题通常涉及检查硬件连接、软件...
在Android 4.X系统中,开发人员经常需要访问和操作SIM卡中的短信和联系人信息。本文将深入探讨两个关键的Android类:`IccSmsInterfaceManager`和`IccPhoneBookInterfaceManagerProxy`,它们是实现这些功能的核心。 ...
这些操作可能包括读取联系人列表,添加新的联系人,更新已有的联系人信息,或者删除特定的联系人。 对于短信的操作,Android系统提供了`SmsManager`类,但其主要用于操作手机内存中的短信,而不是SIM卡上的短信。...
SIM卡,全称为Subscriber Identity Module(用户身份模块),是移动通信设备中的一个重要组件,它存储了用户的个人识别号码(PIN)、国际移动用户识别码(IMSI)以及联系人和短信等数据。在没有备份的情况下,如果...
1. **读取SIM卡信息**:可以读取SIM卡上的联系人、短信、通话记录等数据。这些信息对于备份和迁移至关重耍,尤其是当更换新手机时。 2. **写入SIM卡**:允许用户将新的联系人、短信等内容写入SIM卡,方便在不同设备...
SIM卡管理器,可以用来管理sim卡,读取相关sim联系人资料等
当插入SIM卡时,读卡器会读取卡上的集成电路芯片,该芯片存储了用户的身份信息、联系人、短信、网络设置等数据。驱动程序则作为中间桥梁,将这些操作转化为计算机可以理解和执行的指令。 "Driver Installer.exe" 是...