我的课程BaseActivity
包含许多菜单项,BaseActivity
由我的所有其他活动扩展,以便在扩展它的所有活动中显示相同的菜单项。我希望在用户接听电话时将我的应用音频静音,因此我决定在BaseActivity
中添加更多代码,以便在用户接听电话时将应用静音。
我在网上搜索过,找到了两种方法,但都没有工作:
我尝试的第一种方法:(在基础活动中)
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
//Incoming call: Pause music
TwentySeconds.stopTimer();
Intent i = new Intent(BaseActivity.this, FinishedBeforeTimer.class);
startActivity(i);
Toast.makeText(BaseActivity.this, "INCOMING CALL", Toast.LENGTH_SHORT).show();
} else if(state == TelephonyManager.CALL_STATE_IDLE) {
//Not in call: Play music
} else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {
//A call is dialing, active or on hold
TwentySeconds.stopTimer();
Intent i = new Intent(BaseActivity.this, FinishedBeforeTimer.class);
startActivity(i);
Toast.makeText(BaseActivity.this, "DIALING", Toast.LENGTH_SHORT).show();
}
在我的BaseActivity中使用此代码时,当我拨打我的电话时,我打电话的电话说我无法拨打我的电话,而我的电话从不响铃。这很奇怪......
我试过的第二种方法:
我还尝试使用here所示的意图,但我不能在我的BaseActivity中扩展两者 appCompatAbility 和 BroadcastReceiver。
为什么我的第一个方法是阻止来电?另外,如果第二种方法更容易,我怎么能完成它,因为android中不可能有多重继承。
这是我在搜索网页超过一小时后找到的两种主要方式,但还有另一种方法!我非常感谢您对我的方法为什么做他们正在做的事情或者我如何完成任务的反馈。我总是乐于接受新事物。