android获取imei,android获取屏幕显示内容

Android如何获取手机IMEI

/**

创新互联建站一直在为企业提供服务,多年的磨炼,使我们在创意设计,全网整合营销推广到技术研发拥有了开发经验。我们擅长倾听企业需求,挖掘用户对产品需求服务价值,为企业制作有用的创意设计体验。核心团队拥有超过10多年以上行业经验,涵盖创意,策化,开发等专业领域,公司涉及领域有基础互联网服务绵阳主机托管成都App定制开发、手机移动建站、网页设计、网络整合营销。

* 获取手机IMEI

*/

private static StringgetIMEI(Context context) {

if (Build.VERSION.SDK_INT = Build.VERSION_CODES.Q) {

return null;

}

try {

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

    if (telephonyManager ==null) {

return null;

    }

@SuppressLint({"MissingPermission", "HardwareIds"}) String imei = telephonyManager.getDeviceId();

    return imei;

}catch (Exception e) {

return null;

}

}

android imei获取

随着android系统不断升级,android设备的imei号已经越来越难获取了。网上一些推荐会用meid、androidid来代替imei号。但是因为项目推广需要比对渠道那边回传imei号来确认新增。

发现部分机型渠道(eg:快手)可以获取到而我们获取不到,导致无法确认新增。最终在TelephonyManager中找到getDeviceSoftwareVersion()方法。可以变相实现获取imei号(但也会有getDeviceSoftwareVersion获取不到的机型,不过验证渠道那边也获取不到了)。

public static String getIMEI() {

TelephonyManager telephonyManager = (TelephonyManager) BaseApplication.getAppContext().getSystemService(Context.TELEPHONY_SERVICE);

String imei = null;

if (AndPermission.hasPermissions(BaseApplication.getAppContext(), Manifest.permission.READ_PHONE_STATE)) {

try {

if (Build.VERSION.SDK_INT = Build.VERSION_CODES.O) {

imei = telephonyManager.getImei();

if (!TextUtils.isEmpty(imei)) {

return imei;

} else {

String softwareVersion = getDeviceSoftwareVersion();

if (!TextUtils.isEmpty(softwareVersion) softwareVersion.length() 14) {

String imeiHead = softwareVersion.substring(0, 14);

imei = imeiHead + luhn(imeiHead);

return imei;

} else {

return null;

}

}

} else {

return telephonyManager.getDeviceId();

}

} catch (Exception e) {

e.printStackTrace();

}

}

return imei;

}

/**

* Luhn算法

* 根据号码获取校验位

*

* @param cardNumber

* @return

*/

public static int luhn(String cardNumber) {

int totalNumber = 0;

for (int i = cardNumber.length() - 1; i = 0; i -= 2) {

int tmpNumber = calculate(Integer.parseInt(String.valueOf(cardNumber.charAt(i))) * 2);

if (i == 0) {

totalNumber += tmpNumber;

} else {

totalNumber += tmpNumber + Integer.parseInt(String.valueOf(cardNumber.charAt(i - 1)));

}

其实是因为getDeviceSoftwareVersion和getImei()拼接规则只有末位两个数不相同,而imei的末位数可以通过luhn算法获取,从而拼接成imei值(自测有效)。

但是毕竟还是有部分机型获取不到imei,可以使用oaid来补充说明。

如果是自己app内部做唯一标识的话可以用meid、androidid或deviceid来代替imei

public static String getUniqueId() {

TelephonyManager telephonyManager = (TelephonyManager) BaseApplication.getAppContext().getSystemService(Context.TELEPHONY_SERVICE);

if (AndPermission.hasPermissions(BaseApplication.getAppContext(), Manifest.permission.READ_PHONE_STATE)) {

if (android.os.Build.VERSION.SDK_INT = Build.VERSION_CODES.P) {

android怎么获取手机imei号

您可以通过手机设置的关于本机选项下查看手机IMEI码。

也可以通过拨号键盘输入*#06#获得。

标题名称:android获取imei,android获取屏幕显示内容
文章地址:https://www.cdcxhl.com/article16/dsddcgg.html

成都网站建设公司_创新互联,为您提供品牌网站设计商城网站网站维护定制网站面包屑导航网站改版

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司