我在清单中有权限:
<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
}
}
}
};
我做了一个toast来检查该布尔方法doesUserHavePermission()
的返回值,并且总是返回true,即使在我的模拟器平板电脑上......这很奇怪,因为平板电脑无法制作/接听电话......
我正在测试的模拟器设备是:
为什么布尔值总是为真,我应该如何恰当地改变我的方法?
答案 0 :(得分:0)
将平板电脑连接到计算机,让应用程序在平板电脑上运行并检查它是否仍然返回true。 仿真器并不可靠得出这样的结论,因为仿真器手机上也有电话应用程序,但它无法呼叫。
顺便说一下,尝试用你的问题提供清晰的图片。你包含的那个是不可读的,我无法从中得到任何信息。