Android获取IMEI和MEID
在破解微信数据库时,需要获取手机的DeviceId,但是有时会出现打不开的情况,报出file is not a database: , while compiling: select count(*) from sqlite_master的异常,这时发现我的数据库密码和之前的不一致,对比一下发现获取的deviceId不一致导致的,难道手机的deviceId也会变来变去吗?
搜了一下资料,发现获取手机的deviceId还真没想的那么容易。一般情况我们获取手机的DeviceId也就是手机的IMEI码,一般通过如下代码。此外还需要获取READ_PHONE_STATE权限。
private String getPhoneIMEI() {TelephonyManager tm = (TelephonyManager) getContext().getSystemService(Service.TELEPHONY_SERVICE);return tm.getDeviceId();
}
一个双卡手机不止一个IMEI值,全网通双卡手机有两个IMEI和一个MEID,Android6.0的API中提供了这样的方法getDeviceId(int slotIndex)
type | value | meaning |
---|---|---|
int | PHONE_TYPE_CDMA | Phone radio is CDMA |
int | PHONE_TYPE_GSM | Phone radio is GSM |
private String getPhoneIMEI(int slotIndex) {TelephonyManager tm = (TelephonyManager) getContext().getSystemService(Service.TELEPHONY_SERVICE);return tm.getIMEI(slotIndex);
}private String getPhoneMEID(int slotIndex) {TelephonyManager tm = (TelephonyManager) getContext().getSystemService(Service.TELEPHONY_SERVICE);return tm.getMEID(slotIndex);
}
在Android5.0系统中,可以通过反射获取IMEI和MEID的值。
private String getIMEI(int slotId){try {Class clazz = Class.forName("android.os.SystemProperties");Method method = clazz.getMethod("get", String.class, String.class);String imei = (String) method.invoke(null, "ril.gsm.imei", "");if(!TextUtils.isEmpty(imei)){String[] split = imei.split(",");if(split.length > slotId){imei = split[slotId];}Log.d(TAG,"getIMEI imei: "+ imei);return imei;}} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | ClassNotFoundException e) {e.printStackTrace();Log.w(TAG,"getIMEI error : "+ e.getMessage());}return "";}private String getMEID(){try {Class clazz = Class.forName("android.os.SystemProperties");Method method = clazz.getMethod("get", String.class, String.class);String meid = (String) method.invoke(null, "ril.cdma.meid", "");if(!TextUtils.isEmpty(meid)){Log.d(TAG,"getMEID meid: "+ meid);return meid;}} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | ClassNotFoundException e) {e.printStackTrace();Log.w(TAG,"getMEID error : "+ e.getMessage());}return "";}
至于上面提到的手机deviceId改变因为之前调用tm.getDeviceId()返回的imei值,后来返回meid值导致的,什么原因导致的还没发现。
Android获取IMEI和MEID相关推荐
- android获取imei兼容_Android获取IMEI号码
1 android 获取 imei号码2 3 核心代码:4 5 Imei =((TelephonyManager) getSystemService(TELEPHONY_SERVICE))6 .get ...
- android 获取 imei号码
转自:http://blog.csdn.net/gumanren/archive/2011/02/26/6209237.aspx android 获取 imei号码 核心代码: Imei = ((Te ...
- android 获取imei(国际移动设备身份码)号码详解及其应用场景
IMEI简介: IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号&qu ...
- 获取linux系统编码,Android获取IMEI码
相比大家都知道,每部手机都有一个属于自己的字符串,这个字符串是全球唯一的:即使相同品牌,相同型号,它们彼此也不会雷同:这个码就是IEMI码. 有了IMEI码,我们就能很方便的区分出每一台机器,区分出机 ...
- android 获取 meid 代码,Android 各个版本获取IMEI、MEID
public class IMEIUtil { /** * 获取默认的imei 一般都是IMEI 1 * * @param context * @return */ public static Str ...
- Android 各个版本获取IMEI、MEID
MEID/IMEI1/IMEI2 (可通过在手机拨号键盘中输入 *#06# 即可查询) IMEI:(International Mobile Equipment Identity)国际移动设备身份码的 ...
- android获取imei兼容_Android如何获取双卡手机IMEI的方法示例
前言: 项目中有个统计付费广告转化率的需求,需要获取用户手机的IMEI.但是网上最常见的方法有坑,也就是TelephonyManager.getDeviceId(),这方法有可能获取的是MEID或者空 ...
- android获取imei(android获取wifi密码)
android系统如何获取imei号码,获取手机型号和系统版本号 /*****创建日期2010-4-29下午05:02:47**/packagenet.sunniwell.app;importandr ...
- android获取imei需要read_phone_state吗,Firemonkey android read_phone_state运行时权限要求获取IMEI...
编辑:对不起,我没有在FireMonkey上做更多的功课.这就是我坚持自己的主题,而不是属于它的主题.我已经添加了这些内容,试图让我的答案更值得赏金. 如果您可以将应用清单上的targetSdk限制为 ...
最新文章
- 安装nvidia-docker2
- 深度学习训练模型中的 train from scrath 是什么意思?(247)
- SAP UI5 应用开发教程之二十八 - SAP UI5 应用的集成测试工具 OPA 介绍
- mysql 日期分隔符_sql中的日期处理
- recyclerview放不同的布局_RecyclerView系列之(2):为RecyclerView添加分隔线
- MySQL数据库实操教程(24)——用户管理
- ip地址合不合法怎么看_如何判断IP地址的合法性
- linux的字体文件夹在哪里,把windows下的字体安装到Linux系统下的方法介绍
- 赌运挖洞之Apache目录浏览
- 微信流量主几个月几年没结算,无月份结算单解决方案
- 第五章 数组Ivor Horton
- c语言编程植物信息查询系统,C:\WINDOWS\Desktop\导航库\植物\xzjs\hzc.htm
- 《缠中说禅108课》66:主力资金的食物链
- php测试号推送消息失败,php 给ios推送消息 提示这个错误
- Centos7安装百度云盘
- 大连理工计算机专业课考几门,大连理工大学计算机专业考研科目及研究方向
- 人脸性别转换APP有什么?快把这些APP收好
- python 人生的第一个小爬虫 爬小说 保存一下
- Codeforces #618 div.2 C. Anu Has a Function
- 韦伯分布(Weibull)参数矩估计MATLAB实现
热门文章
- 宏基因组测序结果分析中的名词汇总
- 批训练、注意力模型及其声纹分割应用,谷歌三篇论文揭示其声纹识别技术原理
- 【历史上的今天】3 月 24 日:苹果推出 Mac OS X;微软前任 CEO 出生;Spring 1.0 正式发布
- 陪学读书会——《定位》第⑤章:你不能由此及彼
- 对象与对象变量 LJY第二周
- MVVM模式原理与实现
- jeet air缺点_Jeet框架; 什么是新的?
- vscode配置C++环境(图文详解)
- EXCEL二级数据有效性的设置问题
- IDaaS | 使用 Authing + Lambda 轻松替代 AWS Cognito