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

android 代码获取IMEI,IMSI都为空,怎么解决,第1张

Android获取IMSI和IMEI :

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

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

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

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

代码:

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

Java:

String myIMSI =

androidosSystemPropertiesget(androidtelephonyTelephonyPropertiesPROPERTY_IMSI

);

// within my emulator it returns:   310995000000000

String myIMEI =

androidosSystemPropertiesget(androidtelephonyTelephonyPropertiesPROPERTY_IMEI

);

// within my emulator it returns:   000000000000000

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

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

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

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

/   获得手机的一些标志符      @param c   @return String 手机的类型 /

public String fetch_status(Context c) {

TelephonyManager tm = (TelephonyManager) c

getSystemService(ContextTELEPHONY_SERVICE);//

String str = "";

String IMSI = tmgetSubscriberId();

str += "DeviceId(IMEI) = " + tmgetDeviceId() + "/n";

str += "DeviceSoftwareVersion = " + tmgetDeviceSoftwareVersion()

+ "/n";

str += "Line1Number = " + tmgetLine1Number() + "/n";

return str;

}

序列号等敏感信息。

iOS14及以上版本限制所有应用程序访问设备的IMEI(国际移动设备识别码)和序列号等敏感信息,这是为了保护用户的隐私和安全,避免应用程序滥用这些信息。

iOS是苹果公司开发的移动 *** 作系统,它最初发布于2007年,并且只运行于iPhone手机上。

因为使用了与手机不兼容的东西了。

需要保证手机上获取到的权限稳定才行了。

就在电脑上下载上应用宝软件

用上里面的Kingroot来把权限获取到手机上,

这样才是稳定的了,与手机上的软件就正常

的运行兼容了。

手机上不容易出现上述问题了。

早期的 Android 系统没有现在这么多权限控制设定,管理功能也较不完善(其实是因为当时软件申请的权限也没有现在这么过分)。

在 Android 40 中,谷歌对权限系统进行了改进,于是再经过各大手机厂商的优化,每个国内定制系统就有了如今的权限管理功能。

权限管理,各大品牌其实差不多。

就我用过的几个品牌来讲,华为的权限管理最好,小米其次,OPPO 最差。

当然,这里的“差”是相对的,相对于原生 Android 系统来说,这些厂商的权限管理做的都很好。

(其实是因为 Google Play 的审核比较严格,上架的软件几乎都很克制)

所以,如果你要买新手机,在预算充足的情况下,选华为吧。不只是因为技术很牛,可定制性上也很好。

目前,安卓系统的权限主要分为以下几类:

这里,重点解释一下某些权限的用途。

获取 IMEI 码:很多应用都会申请这一权限, 读取手机的唯一识别码 (估计是用于用户的身份验证和判断多开)

存储:这里指的是 内置存储的读写权限 ,不包含系统 Android/data 文件夹下的应用私有文件夹,如果这些应用需要在根目录下存储数据,则必须拥有该权限。

读取位置信息: 只有在已经开启位置信息开关时,应用才能读取该信息 。这项权限不包含加速度计等传感器。

读取已安装应用列表: 允许应用读取已经安装的软件 ,一些应用中让用户选择其它应用的功能就是这样实现的。

身体传感器:允许应用使用诸如 计步器 等传感器。这可以实现计步功能。

运动数据:也可以实现计步功能,但这项权限是 依赖系统自带的计步算法 实现的,这也是有些计步软件的数据和其它软件数据不同的原因。

创建快捷方式:你在手机主屏上看到的 APP 图标就属于快捷方式,但这是系统在应用安装完成后自动创建的。这项权限允许应用 主动创建快捷方式 (比如微信小程序的图标和的“写文章”按钮)。

悬浮窗:微信视频聊天时切换到其它应用或主屏,这就是悬浮窗。但输入法不属于悬浮窗。

忽略电池优化:在 Android 60 以上系统中,有一种成为 Doze 模式的省电策略。在这种模式下,应用的联网将被禁止,直到下一个窗口或接收到 Google 高优先级推送(需要开发者和网络环境支持)。该权限允许应用在这种模式下连接网络。

是否授予软件相应的权限,取决于该软件的功能和你的需要。

例如,在导航软件中,获取位置信息是一项核心权限,但在效率软件中并不是。

对于所有软件,都建议启用“获取 IMEI 码”权限 ,否则会给开发者带来不便,也会影响用户体验(国内的一些软件甚至会在启动时进行检查,如该权限未开启则不能使用软件)。

建议对所有软件关闭“拨打电话”和除“存储”以外的所有 *** 作类权限(考虑到可能会有恶意软件利用这些权限进行扣费)。

建议关闭除“获取位置信息”和“读取已安装应用列表”以外的所有读取类权限( 注意:关闭“读取短信”权限会导致部分应用无法自动填充短信验证码,但考虑到国内 ROM 对此都有一定优化,故不建议开启该权限

对于位置信息权限,我建议以下软件保持开启:

其它软件要求位置信息权限的,一律拒绝(有些软件失去此权限可能不能正常运行,视情况而定)

至于“读取已安装应用列表”权限,凡是不需要获取其它软件名称的,都可以拒绝此权限。

摄像头和录音权限比较好判断,凡是软件需要这些功能的,都应该允许,否则拒绝即可。

身体传感器和运动数据权限除计步软件外均选择拒绝。

创建快捷方式权限,目前我打开的软件只有一个:comtencentmm 包名,slogan 是“生活方式”,启动界面是月亮的那个国民级应用。

悬浮窗权限,一部分辅助类软件需要打开,比如手机管家和绿色守护,以及前面提到的那个国民级应用的视频悬浮窗。

至于开机自启动等关于后台省电的权限,请看下期

作为App用户的唯一ID,IMEI是个很好的因素。所以基本上所有需要网络服务的Apps都会需要读取IMEI来区分用户,而且是每次通信都需要读取。

「成功获取一次不就行了」是过于想当然了,程序要这样实现只能把这个参数写入到数据库,然后以后每次通信都从数据库读取。不然当Apps被放到后台后,资源随时会被系统回收的,读取到内存的IMEI就没了。然而这么做是不划算的,Android提供了直接读取IMEI的接口,还放去数据库干嘛呢,比起内存数据,读写数据库是个消耗更多资源的 *** 作。所以什么时候需要就什么时候读,是正常的。

以上就是关于android 代码获取IMEI,IMSI都为空,怎么解决全部的内容,包括:android 代码获取IMEI,IMSI都为空,怎么解决、ios16禁止获取imei、手机imei被封了怎么办 我手机root过的,下载了360极客把获取imei权限禁止了,还是被封了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9631057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存