【发布时间】: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