概述
网络请求的时候需要根据设备号id传参,但是服务端后台收到的有时候为空,服务端的存储就为1个0 。而手机设备号获取与手机本身注册的网相关
本人经测试情况魅蓝note5、1:全网通、2张联通卡、获取结果为IMEI1的值。
通过查询API调用getDeviceId()源码可知
通过getDeviceId获取的为IMEI和MEID和ESN
/**
* Returns the unique device ID, for example, the IMEI for GSM and the MEID
* or ESN for CDMA phones. Return null if device ID is not available.
*
* @deprecated Use (@link getImei} which returns IMEI for GSM or (@link getMeid} which returns
* MEID for CDMA.
*/
@Deprecated
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
public String getDeviceId() {
try {
ITelephony telephony = getITelephony();
if (telephony == null)
return null;
return telephony.getDeviceId(mContext.getOpPackageName());
} catch (RemoteException ex) {
return null;
} catch (NullPointerException ex) {
return null;
}
}
IMEI(International Mobile Equipment Identity) 是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台移动电话机一一对应,而且该码是全世界唯一的。
MEID 移动设备识别码(Mobile Equipment Identifier)是CDMA手机的身份识别码,也是每台CDMA手机或通讯平板唯一的识别码。
移动:2G使用 GSM, 3G使用 TD-SCDMA 4G使用TD-LTE
联通:2G使用 GSM, 3G使用 WCDMA 4G使用TD-LTE、FDD-LTE
电信:2G使用 CDMA,3G使用 CDMA2000 4G使用TD-LTE、FDD-LTE
所以,IMEI是联通移动手机的标识,MEID是电信手机的标识。(?待考证:因为官方说的只是GSM和CDMA,而2g网络基本上不存在了吧?)
如果注册的是CDMA 返回的是MEID(电信)
如果注册是的GMS网络,返回的是IMIE
如果一直没插卡 没注册phone默认获取IMEI
1.不插卡怎么读 :不插卡的话 会保持上一次插卡是的phone状态
插卡:即上一次插得是CDMA的,获取的是MEID (电信)
插得是GMS的获取的是IMEI
如果之前一直没有插过卡 默认获取IMEI
2.插一个怎么读
插得是CDMA卡获取MEID(电信)
插得是GMS卡获取的是IMEI
不插卡的卡槽同问题1
插两个怎么读 ?哪个,实践出真理。
哪个卡槽插得是CDMA卡获取的是MEID (电信)
哪个卡槽插得是GMS卡获取的是IMEI
插了再拔出来怎么读
插出来后保持上一次的状态 同问题1
移动联通怎么读?
`slotIndex`看源码估计就是?
/**
* Get slotIndex associated with the subscription.
* @return slotIndex as a positive integer or a negative value if an error either
* SIM_NOT_INSERTED or < 0 if an invalid slot index
* @hide
*/
public static int getSlotIndex(int subId) {
if (!isValidSubscriptionId(subId)) {
if (DBG) {
logd("[getSlotIndex]- fail");
}
}
int result = INVALID_SIM_SLOT_INDEX;
try {
ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
if (iSub != null) {
result = iSub.getSlotIndex(subId);
}
} catch (RemoteException ex) {
// ignore it
}
return result;
}
/**
* Returns the IMEI (International Mobile Equipment Identity). Return null if IMEI is not
* available.
*
* @param slotIndex of which IMEI is returned
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
public String getImei(int slotIndex) {
ITelephony telephony = getITelephony();
if (telephony == null) return null;
try {
return telephony.getImeiForSlot(slotIndex, getOpPackageName());
} catch (RemoteException ex) {
return null;
} catch (NullPointerException ex) {
return null;
}
}
建议统一调用getimei(int)这个接口 这个接口不管手机注册的什么网络 均返回IMEI不会根据插的卡而改变返回值。
电信怎么读
/**
* Returns the MEID (Mobile Equipment Identifier). Return null if MEID is not available.
*
* @param slotIndex of which MEID is returned
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
public String getMeid(int slotIndex) {
ITelephony telephony = getITelephony();
if (telephony == null) return null;
try {
return telephony.getMeidForSlot(slotIndex, getOpPackageName());
} catch (RemoteException ex) {
return null;
} catch (NullPointerException ex) {
return null;
}
}
最后
以上就是高兴小伙为你收集整理的php 获取移动端设备号,getDeviceId()获取设备号IMEI、MEID、ESN的全部内容,希望文章能够帮你解决php 获取移动端设备号,getDeviceId()获取设备号IMEI、MEID、ESN所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复