【问题标题】:Can tablets make calls? (Telephony)平板电脑可以打电话吗? (电话)
【发布时间】:2016-03-15 14:35:48
【问题描述】:

我在清单中有权限:

 <uses-feature 
   android:name="android.permission.READ_PHONE_STATE"  android:required="false" />

检查电话是否正在使用的代码可能会为无法接听电话的平板电脑等设备启动安全异常。因此,我使用此方法检查是否设备可以使用 TelephonyManager:

private boolean doesUserHavePermission(){
    PackageManager pm = getPackageManager();
    final boolean deviceHasPhone = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
    return deviceHasPhone;
}

在我实际检查是否接到电话的代码中,我放置了一个 if 语句来查看设备是否有电话:

private PhoneStateListener phoneStateListener = new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        if (doesUserHavePermission()) { //I ADDED THIS
            if (state == TelephonyManager.CALL_STATE_RINGING) {
                onPhoneCallInterrupt(); //Method I made that mutes audio for phone call
            } else if (state == TelephonyManager.CALL_STATE_IDLE) {
            } else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
                onPhoneCallInterrupt(); //Method I made that mutes audio for phone call
            }
        }
    }
};

我祝酒以检查该布尔方法 doesUserHavePermission() 的返回值,它总是返回 true,即使在我的模拟器平板电脑上也是如此......这很奇怪,因为平板电脑无法制作/接收打电话...

我正在测试的模拟器设备是:

为什么布尔值总是正确的,我应该如何适当地改变我的方法?

【问题讨论】:

    标签: java android string android-layout telephony


    【解决方案1】:

    将您的平板电脑连接到您的计算机,让应用程序在您的平板电脑上运行,然后检查它是否仍然返回 true。 模拟器不能得出这样的结论,因为模拟器手机也有手机应用程序,但它不能打电话。

    顺便说一句,请尝试在您的问题中提供清晰的图片。您包含的那个不可读,我无法从中获取任何信息。

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 2022-07-06
      • 2015-01-16
      • 1970-01-01
      • 2018-05-01
      • 2023-04-05
      • 2012-03-29
      • 2011-12-14
      • 1970-01-01
      相关资源
      最近更新 更多