java - 平板电脑可以打电话吗? (电话)

标签 java android string android-layout telephony

我在 list 中有权限:

 <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
            }
        }
    }
};

我为检查 boolean 方法 doesUserHavePermission() 的返回值干杯,它总是返回 true,即使在我的模拟器平板电脑上也是如此……这很奇怪,因为平板电脑无法调用/接听电话...

我测试的模拟器设备是:

enter image description here

为什么 boolean 值始终为真,我应该如何适本地更改我的方法?

最佳答案

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

顺便说一句,请尽量提供清晰的图片与您的问题。您提供的那个是不可读的,我无法从中获取任何信息。

关于java - 平板电脑可以打电话吗? (电话),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34193753/

相关文章:

java - 如何等待api请求返回响应?

java - 具有自定义身份验证的 Firebase Java 客户端

Android ndk 8b 无法加载库

java - 替换匹配的正则表达式的子字符串

javascript - 通过逗号和空格连接数组

java - 使用 Apache Ant 时部署的 jar 找不到主类

java - 在 Java 应用程序中查找线程创建源

java - 如何使用字符串从 SQL 数据库获取行

android - 类不是抽象的/Activity 不能被实例化

c++ - 查找字符串是否包含类似 'John' 的名称或一般单词