大家都知道手机有通讯录,sim卡里也能存储通讯录的,下面就是实现sim卡里的通讯录,这里我们主要用到了cursor这个游标,这个是非常重要,我们需要的权限是android.permission.READ_CONTACTS、
android.permission.WRITE_CONTACTS、android.permission.READ_PHONE_STATE,我们来看看代码是怎么写的:
package EOE.android.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();
}
}
package eoe.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>
分享到:
相关推荐
在Android平台上,开发人员可以利用特定的API来访问和读取SIM卡信息,这在一些应用中非常有用,比如定位、身份验证或者提供网络服务。本文将深入探讨如何通过编程方式实现这一功能,并且详细解释如何创建一个完整的...
本主题将深入探讨如何在Windows Mobile 5.0环境下,利用Visual Studio 2008和.NET Compact Framework 2.0(CF2.0)来读取SIM卡的相关信息,包括IMEI、IMSI和ICCID。 **IMEI(国际移动设备识别码)** 是每个移动设备...
3. `SmartCardReader.cs`: 一个类文件,实现了与SIM卡读卡器的通信,包括打开/关闭连接,发送AT命令,读取SIM卡数据等功能。 4. `DataParser.cs`: 解析SIM卡返回的数据,将二进制数据转化为可读的电话簿和短信格式。...
在Android平台上,实现“自动读取SD卡里的图片,并以3D显示”的功能涉及多个关键技术点,主要包括Android的文件系统访问、图片加载库、图片处理和3D渲染。以下是对这些知识点的详细说明: 1. **Android文件系统访问...
在本项目中,STM32被用作核心处理器,负责读取SIM900A模块接收到的短信内容,并根据内容执行相应指令,然后回复用户。SIM900A是一款GSM/GPRS模块,可以实现语音通话、短信收发以及数据传输功能。 首先,我们需要...
随着移动通信技术和智能卡技术的飞速发展,使得市场对SIM卡的要求 越来越高,不仅从性能上要求其智能化的程度提高,而且要求其成为个人移 动信息的终端。作为运营商提供服务为基本依托的SIM卡,基于SIM卡的数 据新...
EC20系列模组支持1.8V/3.0V的SIM卡,通过观察SIM_VDD、SIM_DATA、SIM_CLK和SIM_RST的波形变化,可以了解模组在搜索SIM卡过程中的行为。例如,SIM_VDD和SIM_RESET的波形会从1.8V切换至3.0V,然后变为低电平,表明模组...
【单片机直接读写SIM卡的软件设计】 在当今的信息时代,SIM卡作为用户身份识别模块被广泛应用,它的通信遵循GSM11.11标准。通常情况下,SIM卡的读写操作是通过GSM设备与微处理器(如单片机或ARM)交互来实现的,微...
这是因为出于隐私保护和安全考虑,Android系统并未开放直接读取用户手机号码的API接口。开发者通常可以通过以下方式获取部分SIM卡相关的信息: 1. **SIM卡运营商信息获取**: - 使用`SubscriptionManager`类:...
这个权限允许应用程序读取电话的状态,包括设备ID、SIM卡状态以及电话号码等信息。由于涉及到用户隐私,从Android 6.0(API级别23)开始,此权限被视为危险权限,需要在运行时动态请求。 然而,值得注意的是,`...
在本文中,我们将深入探讨SIM ADPU(Application Protocol Data Unit)指令,以及如何通过串口通讯来读取SIM卡ID号。 ADPU指令是SIM卡与智能卡读卡器之间进行通信的一种协议,它定义了数据传输的结构和格式。ADPU由...
在这个主题中,我们主要关注的是如何利用C51语言与GSM模块交互,包括发送AT指令、读取SIM卡上的号码以及短信处理。 C51是Microchip公司为8051系列微控制器设计的一种高级语言,它扩展了标准C语言,以便更好地适应...
在Android平台上,获取手机通讯录和SIM卡联系人,以及调用拨号界面是常见的功能需求,这通常涉及到用户信息的读取和系统的交互。以下将详细解释如何实现这些功能。 首先,要获取手机通讯录的联系人信息,我们需要...
1. **读取SIM卡信息**:可以读取SIM卡上的联系人、短信、通话记录等数据。这些信息对于备份和迁移至关重耍,尤其是当更换新手机时。 2. **写入SIM卡**:允许用户将新的联系人、短信等内容写入SIM卡,方便在不同设备...
解SIM卡软件的工作原理通常是通过读取SIM卡上的数据,然后将这些数据写入另一张空白的SIM卡,实现SIM卡的复制。 "FDv3.0使用说明.doc":这是一个文档文件,详细介绍了FD软件的版本3.0的使用方法。用户可以通过阅读...
例如,开发者可能需要读取SIM卡信息,如IMSI(国际移动用户识别码)和ICCID(集成电路卡识别码),或者实现SIM卡锁等功能。 沃勤,又称为Vowin,是一家专注于移动互联网应用开发平台和服务的公司。他们的开发平台...
在电子设备中,如Arduino或树莓派等嵌入式系统,经常需要处理与外部存储设备的交互,例如从SD卡中读取数据并显示在显示屏上。本项目聚焦于从SD卡读取TXT文件并将内容呈现在TFT屏幕上。这涉及到几个关键的技术点: 1...
标题中的“电脑通过手机SIM卡收发短信”指的是在个人计算机上实现利用手机SIM卡进行短信的发送和接收功能。这种技术通常应用于自动化系统、远程监控或者设备控制等场景,使得PC能够具备通信能力,而无需额外的硬件...
4G模组 SIM卡无法识别排查解决方案 在本文中,我们将详细讨论 4G 模组 SIM 卡无法识别的问题,并提供相应的排查和解决方案。 标题解释: 4G 模组 SIM 卡无法识别是一种常见的问题,导致模组无法连接网络和参与...
2. **读取SIM信息**:移动终端通过卡座与SIM卡通信,读取SIM卡上的国际移动用户识别码(IMSI)、运营商信息等,以便建立网络连接。 3. **电源管理**:为确保SIM卡在各种状态下都能正常工作,设备需要提供稳定的电源...