android 代码获取IMEI,IMSI都为空,怎么解决

android 代码获取IMEI,IMSI都为空,怎么解决,第1张

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、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9441560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存