0

应用程序需要知道它是否能够发送 SMS。现在我可以看到以下行正在为模拟器返回 false。

getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)

我担心如果它在模拟器中返回错误,那么真实设备也可能是这种情况?请确认这是否是检查 SMS 功能的正确方法。

我在 SO 中找不到任何答案,所以我决定创建一个新答案。

如何重现?

我正在使用 API 版本 16 的 Nexus 5 模拟器。 在此处输入图像描述

4

1 回答 1

0

是的,它会返回 false 为什么?

因为模拟器没有电话功能但是如果你想启用去模拟器设置。但它会为手机返回 true,而对于平板电脑或任何没有电话功能的设备将返回 false

更好的方法

if (((TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE)).getPhoneType()
    == TelephonyManager.PHONE_TYPE_NONE)
{
    // No calling feature available
}

不要忘记添加烫发。表现出来READ_PHONE_STATE

于 2017-07-16T15:48:36.720 回答