大家都知道手机有通讯录,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(国际移动设备识别码)** 是每个移动设备...
vc开发读取手机sim卡联系人源代码,方便大家下载,不要资源分。
在安全方面,读取SIM信息需要相应的权限,例如在AndroidManifest.xml中声明READ_PHONE_STATE权限。未经用户许可,应用程序不能擅自获取这些敏感信息。此外,隐私法规如欧洲的GDPR(通用数据保护条例)要求处理个人...
在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,然后变为低电平,表明模组...
在Windows Mobile操作系统上,开发应用程序来读取SIM卡信息是一项常见的任务,这主要涉及移动设备的通信和身份验证功能。Windows Mobile是微软为掌上设备和智能手机设计的一个操作系统,它提供了一个类似桌面Windows...
【单片机直接读写SIM卡的软件设计】 在当今的信息时代,SIM卡作为用户身份识别模块被广泛应用,它的通信遵循GSM11.11标准。通常情况下,SIM卡的读写操作是通过GSM设备与微处理器(如单片机或ARM)交互来实现的,微...
这个权限允许应用程序读取电话的状态,包括设备ID、SIM卡状态以及电话号码等信息。由于涉及到用户隐私,从Android 6.0(API级别23)开始,此权限被视为危险权限,需要在运行时动态请求。 然而,值得注意的是,`...
对于大多数设备,SIM卡短信的读取可能需要特定的设备API或者厂商自定义的解决方案。 例如,有些设备提供了一个名为`com.android.providers.telephony.SmsProvider`的自定义Content Provider,可以用来访问SIM卡短信...
在本文中,我们将深入探讨SIM ADPU(Application Protocol Data Unit)指令,以及如何通过串口通讯来读取SIM卡ID号。 ADPU指令是SIM卡与智能卡读卡器之间进行通信的一种协议,它定义了数据传输的结构和格式。ADPU由...
在Android平台上,获取手机通讯录和SIM卡联系人,以及调用拨号界面是常见的功能需求,这通常涉及到用户信息的读取和系统的交互。以下将详细解释如何实现这些功能。 首先,要获取手机通讯录的联系人信息,我们需要...
在Windows Mobile操作系统下...总之,通过理解IMSI、IMEI、TMSI和MSISDN等概念,以及如何利用TAPI接口,开发者可以在Windows Mobile环境中编写程序来读取SIM卡信息,从而实现特定的功能需求,例如身份验证或设备管理。
1. **读取SIM卡信息**:可以读取SIM卡上的联系人、短信、通话记录等数据。这些信息对于备份和迁移至关重耍,尤其是当更换新手机时。 2. **写入SIM卡**:允许用户将新的联系人、短信等内容写入SIM卡,方便在不同设备...
例如,开发者可能需要读取SIM卡信息,如IMSI(国际移动用户识别码)和ICCID(集成电路卡识别码),或者实现SIM卡锁等功能。 沃勤,又称为Vowin,是一家专注于移动互联网应用开发平台和服务的公司。他们的开发平台...
在电子设备中,如Arduino或树莓派等嵌入式系统,经常需要处理与外部存储设备的交互,例如从SD卡中读取数据并显示在显示屏上。本项目聚焦于从SD卡读取TXT文件并将内容呈现在TFT屏幕上。这涉及到几个关键的技术点: 1...
标题中的“电脑通过手机SIM卡收发短信”指的是在个人计算机上实现利用手机SIM卡进行短信的发送和接收功能。这种技术通常应用于自动化系统、远程监控或者设备控制等场景,使得PC能够具备通信能力,而无需额外的硬件...
1. **SIM卡数据读取**:程序能够读取SIM卡上的各种数据,如电话簿、短消息、服务提供商信息等。 2. **备份与恢复**:用户可以将SIM卡数据备份到电脑或另一张SIM卡,以防数据丢失,并支持数据恢复。 3. **编辑与管理*...