当前位置:首页 » 安卓系统 » 获取imeiandroid

获取imeiandroid

发布时间: 2024-01-04 02:34:42

‘壹’ 如何获取Android唯一标识

我刚好做过这方面的研究,直接拿我之前做过的笔记了,欢迎关注、采纳、持续交流Andorid问题

一共有 五大方法:(推荐第五种)

1.设备ID(DEVICE_ID)

Android系统为开发者提供的用于标识手机设备的标识码。它会根据不同的手机设备返回IMEI,MEID或者ESN码(IMEI是手机的身份证,MEID是CDMA制式(电信运营的)的专用身份证;IMEI是15位,MEID是14位)。

  • l获取方法

java">TelephonyManagertm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
StringDEVICE_ID=tm.getDeviceId();
  • l注意点:

没有通话的硬件功能,无法获得DEVICE_ID。

需要READ_PHONE_STATE权限,部分用户会怀疑软件的安全性。

(Android 6.0 以上需要用户手动赋予该权限)

厂商定制系统中的Bug,可能是一串0或者一串*号。

2. SIM卡序列号

不同SIM卡的序列号不同

  • l获取办法

TelephonyManagertm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
StringsimSerialNum=tm.getSimSerialNumber();
  • l注意点

手机未装SIM卡或者不可用时,返回 null.

也需要 READ_PHONE_STATE 权限。


3. 设备序列号(SERIAL)

  • l获取办法

StringserialNum=android.os.Build.SERIAL;
  • l注意点

所有的CDMA 设备对于却返回一个空值

Android系统2.3版本以上

4. ANDROID_ID

在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,这个16进制的字符串就是ANDROID_ID,当设备被wipe后该值会被重置。

  • l获取办法

StringANDROID_ID=System.getString(getContentResolver(),Settings.System.ANDROID_ID);
  • l注意点

定制系统的Bug:不同的设备可能会产生相同的,有些设备返回的值为null。

在 Android 4.2 及以上, 设备启用多用户功能后,每个用户的 Android_ID 不相同。

部分设备的ANDROID_ID和TelephonyManager.getDeviceId()返回相同的值

5. 自定义UUID(本人推荐)

publicclassInstallation{
privatestaticStringsID=null;
="INSTALLATION";

(Contextcontext){
if(sID==null){
Fileinstallation=newFile(context.getFilesDir(),INSTALLATION);
try{
if(!installation.exists())writeInstallationFile(installation);
sID=readInstallationFile(installation);
}catch(Exceptione){
thrownewRuntimeException(e);
}
}
returnsID;
}

(Fileinstallation)throwsIOException{
RandomAccessFilef=newRandomAccessFile(installation,"r");
byte[]bytes=newbyte[(int)f.length()];
f.readFully(bytes);
f.close();
returnnewString(bytes);
}

(Fileinstallation)throwsIOException{
FileOutputStreamout=newFileOutputStream(installation);
Stringid=UUID.randomUUID().toString();
out.write(id.getBytes());
out.close();
}
}

‘贰’ 如何获取Android唯一标识

唯一ID即IMEI,获取方式如下代码:
TelephonyManagerTelephonyMgr=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
StringszImei=TelephonyMgr.getDeviceId();

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

Android获取IMSI和IMEI :

IMSI是一个唯一的数字,标识了GSM和UMTS 网络里的唯一一个用户.

存储 在手机的SIM卡里,它会通过手机发送到网络上。

IMEI也是一串唯一的数字,标识了GSM 和UMTS网络里的三星 Galaxy I9100.。

它通常被打印在手机里电池下面的那一面,拨 *#06# 也能看到它。

代码:

这里是你在Android里读出 唯一的 IMSI-ID/IMEI-ID 的方法。

Java:

StringmyIMSI=

android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMSI

);

//withinmyemulatoritreturns:310995000000000

StringmyIMEI=

android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMEI

);

//withinmyemulatoritreturns:000000000000000

手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手

机号码的数据写入到sim卡中。sim卡只有唯一的编号,供网络与设备识别那就是imsi号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。

试想,你的sim丢失后,补办一张新的会换号码吗? —不会就是因为在你的手机号码对应的 imsi号在移动运营商中被修改成新sim卡的imsi号码。

这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。

/** * 获得手机的一些标志符* *@paramc *@returnString 手机的类型 */

publicStringfetch_status(Contextc){

TelephonyManagertm=(TelephonyManager)c

.getSystemService(Context.TELEPHONY_SERVICE);//

Stringstr="";

StringIMSI=tm.getSubscriberId();

str+="DeviceId(IMEI)="+tm.getDeviceId()+"/n";

str+="DeviceSoftwareVersion="+tm.getDeviceSoftwareVersion()

+"/n";

str+="Line1Number="+tm.getLine1Number()+"/n";

return str;

}

‘肆’ 安卓应用软件启动时获取手机的IMEI IMSI 本机号码有什么作用

一个是统计你正在使用它们的软件,统计用户数量,第二就是有针对性的记录你的imei号码平时多浏览什么内容,然后可以针对爱好投放广告

热点内容
电脑如何避过联网查配置 发布:2024-11-29 01:25:16 浏览:971
期货软件编程 发布:2024-11-29 01:13:16 浏览:833
如何下载加密pdf文件 发布:2024-11-29 01:09:21 浏览:325
高通android开发 发布:2024-11-29 01:09:11 浏览:692
xp电脑无线网密码怎么看密码 发布:2024-11-29 01:08:30 浏览:123
恋爱剧脚本 发布:2024-11-29 00:59:58 浏览:574
安卓官方版阴阳师在哪里下载 发布:2024-11-29 00:59:50 浏览:416
全球有多少忘记密码丢失的比特币 发布:2024-11-29 00:59:02 浏览:668
苹果手机如何操作安卓三大键 发布:2024-11-29 00:58:55 浏览:165
凯美瑞混动版哪个配置值得买 发布:2024-11-29 00:54:49 浏览:238