当前位置:首页 » 安卓系统 » 获取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号码平时多浏览什么内容,然后可以针对爱好投放广告

热点内容
安卓怎么录屏别人直播 发布:2025-01-22 12:35:20 浏览:385
1030怎么配置电脑 发布:2025-01-22 12:35:19 浏览:89
sql数据库的端口 发布:2025-01-22 12:20:02 浏览:362
安卓最终幻想8怎么设置中文 发布:2025-01-22 12:19:23 浏览:651
怎么查电脑配置和网络 发布:2025-01-22 12:19:16 浏览:586
linuxsnmp查看 发布:2025-01-22 12:17:49 浏览:37
安卓数据线怎么接蓝牙 发布:2025-01-22 12:07:29 浏览:229
扣扣账号多少次密码不正确会被封 发布:2025-01-22 12:07:19 浏览:400
python是32位还是64位 发布:2025-01-22 11:51:41 浏览:894
铃声多多缓存文件夹 发布:2025-01-22 11:51:39 浏览:724