gpt4 book ai didi

java - 在 Android 平板电脑上调用 getSimCountryIso() 时会发生什么?

转载 作者:行者123 更新时间:2023-12-02 02:40:00 28 4
gpt4 key购买 nike

在我的 Android 应用中,为了确定某些功能,我使用 getSimCountryIso()getNetworkCountryIso() 检查设备的 ISO 国家/地区代码。在我的真实移动设备和模拟器上对此进行了测试,并且全部返回了某些值,没有任何错误。

其中一部是我日常使用的司机手机,里面有 SIM 卡,但其他手机都没有 SIM 卡。所以一开始,我以为 getSimCountryIso()getNetworkCountryIso() 总是返回一些值,但现在我很怀疑,因为我所有的真实设备都曾经有 SIM 卡一次和模拟器可能与真实的有所不同。

我想知道当这些在真正的平板电脑上调用时会发生什么,其中从来没有 SIM 卡并且只有 WiFi 连接。我总是可以期望某个值吗?还是异常或 null?

最佳答案

我以为你会得到一个 NullPointerException,但是在平板电脑上测试它 - Pixel C,运行 Nougat - 我实际上得到了 TelephonyManager.getSimCountryIso()TelephonyManager 的空字符串.getNetworkCountryIso().

我假设结果是 NPE,因为在平板电脑上调用 PackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) 将返回 false。这足以告诉我,您不应该尝试在非电话设备上以这种方式获取 SIM 或网络国家/地区代码。但是,如果您尝试在此类设备上使用 Context.getSystemService() 检索 TelephonyManager,您仍然会得到一个非空的 TelephonyManager - 它只是对提供 SIM 卡或网络国家/地区没有帮助。

在我看来,如果您使用的设备不具备电话系统功能,则应该考虑使用 GPS 位置,或者如果您确实不想侵犯位置权限,则应考虑使用用户设置的区域设置可以容忍用户设置的区域设置不是用户所在的位置。

关于java - 在 Android 平板电脑上调用 getSimCountryIso() 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45659002/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com