SIM卡相关

手机号不是存在SIM卡上的,SIM卡只有一个串号.
在运营商的服务器上有手机号和序号对应的一张表.所以你SIM卡办理遗失,运营商只要把新SIM卡的串号和你原来的手机号绑定即可.

获取手机号的唯一办法是收个短信,短信里面有你的手机号码.所以很多程序为了获取手机号会要求你注册时发短信,然后它给你回个短信.


uses

  Androidapi.JNI.GraphicsContentViewText, Androidapi.JNIBridge,

  Androidapi.JNI.Telephony, Androidapi.JNI.JavaTypes, FMX.Helpers.Android;

var

  TelephonyManager: JTelephonyManager;

  TelephonyServiceNative: JObject;

begin

  TelephonyServiceNative := SharedActivityContext.getSystemService

    (TJContext.JavaClass.TELEPHONY_SERVICE);

  if Assigned(TelephonyServiceNative) then

    TelephonyManager := TJTelephonyManager.Wrap

      ((TelephonyServiceNative as ILocalObject).GetObjectID);

  //TelephonyManager.getDeviceId 取IMEI

  //TelephonyManager.getLine1Number 取MSISDN  手机号,大部分SIM卡中不会写入这个信息

  //TelephonyManager.getSimSerialNumber 取ICCID

  //TelephonyManager.getSubscriberId 取IMSI  运营商实际上是用这个查询的他那张对应电话号码的表

  //还有很多方法,具体请查看JTelephonyManager的声明

end;

---------------------------------------------------------------------------------------------------------------------

public String readSIMCard() {
TelephonyManager tm = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);//取得相关系统服务
StringBuffer sb = new StringBuffer();
switch(tm.getSimState()){ //getSimState()取得sim的状态 有下面6中状态
case TelephonyManager.SIM_STATE_ABSENT :sb.append("无卡");break; 
case TelephonyManager.SIM_STATE_UNKNOWN :sb.append("未知状态");break;
case TelephonyManager.SIM_STATE_NETWORK_LOCKED :sb.append("需要NetworkPIN解锁");break;
case TelephonyManager.SIM_STATE_PIN_REQUIRED :sb.append("需要PIN解锁");break;
case TelephonyManager.SIM_STATE_PUK_REQUIRED :sb.append("需要PUK解锁");break;
case TelephonyManager.SIM_STATE_READY :sb.append("良好");break;
}

if(tm.getSimSerialNumber()!=null){
sb.append("@" + tm.getSimSerialNumber().toString());
}else{
sb.append("@无法取得SIM卡号");
}

if(tm.getSimOperator().equals("")){
sb.append("@无法取得供货商代码");
}else{
sb.append("@" + tm.getSimOperator().toString());
}

if(tm.getSimOperatorName().equals("")){
sb.append("@无法取得供货商");
}else{
sb.append("@" + tm.getSimOperatorName().toString());
}

if(tm.getSimCountryIso().equals("")){
sb.append("@无法取得国籍");
}else{
sb.append("@" + tm.getSimCountryIso().toString());
}

if (tm.getNetworkOperator().equals("")) {
sb.append("@无法取得网络运营商");
} else {
sb.append("@" + tm.getNetworkOperator());
}
if (tm.getNetworkOperatorName().equals("")) {
sb.append("@无法取得网络运营商名称");
} else {
sb.append("@" + tm.getNetworkOperatorName());
}
if (tm.getNetworkType() == 0) {
sb.append("@无法取得网络类型");
} else {
sb.append("@" + tm.getNetworkType());
}
return sb.toString();
}

参考:

http://www.360doc.com/content/13/1201/15/9200790_333643872.shtml

http://www.cnblogs.com/-cyb/articles/Android_Read_Sim.html

时间: 2024-10-13 04:36:37

SIM卡相关的相关文章

Android 通过反射及AIDL获取双卡手机SIM卡相关信息,及注册监听

在Android 5.0之前,虽然也有手机是双卡手机,但是双卡方案都是ODM厂商自己做的,或者是有芯片厂商提供的源码完成.因此,如果要在4.4甚至更早之前的手机上获取双卡信息,基本上不是一向巨大的工程.虽然之前尝试过使用反射方法去获取 高通的"android.telephony.MSimTelephonyManager"类 MTK的"com.mediatek.common.telephony.ITelephonyEx.aidl"类, 打印出函数的方法和参数以及类属性

读取SIM卡相关信息

关键代码: TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); String      imei = tm.getDeviceId();       //取出IMEI String      tel = tm.getLine1Number();     //取出MSISDN,很可能为空 String      iccid =tm.getSimSerialNumber(

三种尺寸:手机SIM卡使用指南

毫无疑问目前卖的最火的手机非iPhone 5s莫属,相信仍有不少网友目前处于观望之中,由于iPhone 5s和iPhone 5c采用与iPhone相同的Nano-SIM卡,因此不少新用户在使用之前也徒生了一道工序,就是需要更换Nano-SIM卡,究竟这种SIM卡跟我们以往接触的标准SIM卡和Micro-SIM又有什么区别呢?又有何种渠道才能更换Nano-SIM卡呢? 区分三种SIM卡 在了解SIM卡种类之前,我们先来简单介绍一下SIM卡的功能,众所周知SIM卡就是我们在使用手机时插入的识别卡,S

SIM卡安全

前言 关于SIM卡克隆不是什么新鲜技术,跟朋友也吹牛过,也演示过,更写过稿子,本文基于原来的稿子修改,作为普及,特此将我这些低级无聊的拿不出场合的烂东西厚脸拿出来吹牛一番. 一卡对一号,SIM卡中存储了一些通信过程中的重要信息,作为通信过程中的身份验证和身份识别,之外,卡中一般还存储了联系人和短信,SIM也自带了一种非常简单的处理器,用于完成通信过程中的加密运算. 克隆SIM卡 据个人了解,SIM卡克隆技术最先是从台湾引进大陆的,而克隆SIM在国外也有些流行的.SIM克隆指的是通过一个专针对于S

每日总结 - Android 读取SIM卡参数

1 package com.water.activity; 2 3 import java.util.List; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.telephony.CellLocation; 8 import android.telephony.NeighboringCellInfo; 9 import android.telephony.TelephonyManager

TelephonyManager类:Android手机及Sim卡状态的获取

TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息. 直接上注释后的代码,请享用 package net.sunniwell.app;import android.app.Activity;import android.os.Bundle;import android.telephony.CellLocation;import android.telephony.PhoneStateListener;import android.telephony.Telepho

Android本机号码及Sim卡状态的获取

SIM卡存储的数据可分为四类:第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI).鉴权和加密算法等等.第二类是暂时存放的有关网络的数据.如位置区域识别码(LAI).移动用户暂时识别码(TMSI).禁止接入的公共电话网代码等.第三类是相关的业务代码,如个人识别码(PIN).解锁码(PUK).计费费率等.第四类是电话号码簿,是手机用户随时输入的电话号码.用户全部资料几乎都存储在SIM卡内,因此SIM卡又称为用户资料识别卡. 

android Copy联系人到SIM卡时,如何对姓名自动截断

1:添加相关函数和变量 private int SpecEncodingArrLen = 44; private short[][] specialEncoding = { {0x0040, 0x0000}, //@ {0x00A3, 0x0001}, {0x0024, 0x0002}, {0x00A5, 0x0003}, {0x00E8, 0x0004}, {0x00E9, 0x0005}, {0x00F9, 0x0006}, {0x00EC, 0x0007}, {0x00F2, 0x0008

Android开发之获取手机SIM卡信息

TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设备上的电话服务信息. 应用程序能够使用这个类的方法来确定电话服务和状态,以及訪问某些类型的用户信息.应用程序还能够注冊一个侦听器以接收的电话状态变化通知. 你不能直接实例化这个类;相反,你能够通过Context.getSystemService(Context.TELEPHONY_SERVICE)方