Android获取IMSI和IMEI :
IMSI是一个唯一的数字,标识了GSM和UMTS 网络里的唯一一个用户
它存储 在手机的SIM卡里,它会通过手机发送到网络上。
IMEI也是一串唯一的数字,标识了GSM 和UMTS网络里的三星 Galaxy I9100。
它通常被打印在手机里电池下面的那一面,拨 #06# 也能看到它。
代码:
这里是你在Android里读出 唯一的 IMSI-ID / IMEI-ID 的方法。
Java:
String myIMSI =
androidosSystemPropertiesget(androidtelephonyTelephonyPropertiesPROPERTY_IMSI
);
// within my emulator it returns: 310995000000000
String myIMEI =
androidosSystemPropertiesget(androidtelephonyTelephonyPropertiesPROPERTY_IMEI
);
// within my emulator it returns: 000000000000000
手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手
机号码的数据写入到sim卡中。sim卡只有唯一的编号,供网络与设备识别那就是imsi号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。
试想,你的sim丢失后,补办一张新的会换号码吗 —不会就是因为在你的手机号码对应的 imsi号在移动运营商中被修改成新sim卡的imsi号码。
这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。
/ 获得手机的一些标志符 @param c @return String 手机的类型 /
public String fetch_status(Context c) {
TelephonyManager tm = (TelephonyManager) c
getSystemService(ContextTELEPHONY_SERVICE);//
String str = "";
String IMSI = tmgetSubscriberId();
str += "DeviceId(IMEI) = " + tmgetDeviceId() + "/n";
str += "DeviceSoftwareVersion = " + tmgetDeviceSoftwareVersion()
+ "/n";
str += "Line1Number = " + tmgetLine1Number() + "/n";
return str;
}
获取不到是因为权限没有开放,要做一下配置:
加入权限
在manifestxml文件中要添加 <uses-permission android:name="androidpermissionREAD_PHONE_STATE" />
实现方法参考代码
package netsunniwellapp;
import androidappActivity;
import androidosBundle;
import androidtelephonyCellLocation;
import androidtelephonyPhoneStateListener;
import androidtelephonyTelephonyManager;
public class TelManager extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
TelephonyManager tm = (TelephonyManager) thisgetSystemService(TELEPHONY_SERVICE);
/
电话状态:
1tmCALL_STATE_IDLE=0 无活动
2tmCALL_STATE_RINGING=1 响铃
3tmCALL_STATE_OFFHOOK=2 摘机
/
tmgetCallState();//int
/
电话方位:
/
tmgetCellLocation();//CellLocation
/
唯一的设备ID:
GSM手机的 IMEI 和 CDMA手机的 MEID
Return null if device ID is not available
/
tmgetDeviceId();//String
/
设备的软件版本号:
例如:the IMEI/SV(software version) for GSM phones
Return null if the software version is not available
/
tmgetDeviceSoftwareVersion();//String
/
手机号:
GSM手机的 MSISDN
Return null if it is unavailable
/
tmgetLine1Number();//String
/
附近的电话的信息:
类型:List<NeighboringCellInfo>
需要权限:androidManifestpermission#ACCESS_COARSE_UPDATES
/
tmgetNeighboringCellInfo();//List<NeighboringCellInfo>
/
获取ISO标准的国家码,即国际长途区号。
注意:仅当用户已在网络注册后有效。
在CDMA网络中结果也许不可靠。
/
tmgetNetworkCountryIso();//String
/
MCC+MNC(mobile country code + mobile network code)
注意:仅当用户已在网络注册时有效。
在CDMA网络中结果也许不可靠。
/
tmgetNetworkOperator();//String
/
按照字母次序的current registered operator(当前已注册的用户)的名字
注意:仅当用户已在网络注册时有效。
在CDMA网络中结果也许不可靠。
/
tmgetNetworkOperatorName();//String
/
当前使用的网络类型:
例如: NETWORK_TYPE_UNKNOWN 网络类型未知 0
NETWORK_TYPE_GPRS GPRS网络 1
NETWORK_TYPE_EDGE EDGE网络 2
NETWORK_TYPE_UMTS UMTS网络 3
NETWORK_TYPE_HSDPA HSDPA网络 8
NETWORK_TYPE_HSUPA HSUPA网络 9
NETWORK_TYPE_HSPA HSPA网络 10
NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B 4
NETWORK_TYPE_EVDO_0 EVDO网络, revision 0 5
NETWORK_TYPE_EVDO_A EVDO网络, revision A 6
NETWORK_TYPE_1xRTT 1xRTT网络 7
/
tmgetNetworkType();//int
/
手机类型:
例如: PHONE_TYPE_NONE 无信号
PHONE_TYPE_GSM GSM信号
PHONE_TYPE_CDMA CDMA信号
/
tmgetPhoneType();//int
/
Returns the ISO country code equivalent for the SIM provider's country code
获取ISO国家码,相当于提供SIM卡的国家码。
/
tmgetSimCountryIso();//String
/
Returns the MCC+MNC (mobile country code + mobile network code) of the provider of the SIM 5 or 6 decimal digits
获取SIM卡提供的移动国家码和移动网络码5或6位的十进制数字
SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断)
/
tmgetSimOperator();//String
/
服务商名称:
例如:中国移动、联通
SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断)
/
tmgetSimOperatorName();//String
/
SIM卡的序列号:
需要权限:READ_PHONE_STATE
/
tmgetSimSerialNumber();//String
/
SIM的状态信息:
SIM_STATE_UNKNOWN 未知状态 0
SIM_STATE_ABSENT 没插卡 1
SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2
SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3
SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4
SIM_STATE_READY 就绪状态 5
/
tmgetSimState();//int
/
唯一的用户ID:
例如:IMSI(国际移动用户识别码) for a GSM phone
需要权限:READ_PHONE_STATE
/
tmgetSubscriberId();//String
/
取得和语音邮件相关的标签,即为识别符
需要权限:READ_PHONE_STATE
/
tmgetVoiceMailAlphaTag();//String
/
获取语音邮件号码:
需要权限:READ_PHONE_STATE
/
tmgetVoiceMailNumber();//String
/
ICC卡是否存在
/
tmhasIccCard();//boolean
/
是否漫游:
(在GSM用途下)
/
tmisNetworkRoaming();//
}
}
以上就是关于android 代码获取IMEI,IMSI都为空,怎么解决全部的内容,包括:android 代码获取IMEI,IMSI都为空,怎么解决、为什么在Android2.3.4下获取不到IMEI、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)