java监听电话代码是否未执行?
我的应用程序播放音频,因此我想在用户接到电话时将应用程序的音频静音。这样,音乐就不会在用户通话中播放。我使用了phoneStateListener
,但出于某种原因,其中的方法没有执行——我知道,因为日志没有显示:
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
//Incoming call: Pause music
TwentySeconds.stopTimer(); //Stop service which mutes app
Intent i = new Intent(BaseActivity.this, Main_Menu.class);
startActivity(i);
Toast.makeText(BaseActivity.this, "INCOMING CALL", Toast.LENGTH_SHORT).show();
Log.v(TAG, "INCOMING CALL");
} else if (state == TelephonyManager.CALL_STATE_IDLE) {
//Not in call: Play music
Log.v(TAG, "NOT IN A CALL");
} else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
//A call is dialing, active or on hold
TwentySeconds.stopTimer(); //Stop service which mutes app
Intent i = new Intent(BaseActivity.this, Main_Menu.class);
startActivity(i);
Log.v(TAG, "CALL IS ACTIVE!");
Toast.makeText(BaseActivity.this, "DIALING", Toast.LENGTH_SHORT).show();
}
}
};
我已经在网络上到处寻找如何做到这一点——我发现一种方法是使用意图,但这需要扩展BroadcastReceiver,我不能扩展两件事。所以,就目前而言,phoneStateListener完全没有做任何事情。我真的很感谢你帮我修好^{
谢谢, 富有的
# 1 楼答案
我看了你的代码,很好。但我只是在想你的清单文件,你是否有足够的权限读取手机状态。查看我的清单文件(正在运行):
最好通过TelephonyManager访问/使用这个“自定义电话状态侦听器”类,如下所示:
现在我们设置tManager。listen方法CustomPhoneStateListener的一个新对象,并在events参数中传递Android PhoneStateListenerlisten_uu标志的按位或组合
您可以设置自己的自定义手机状态侦听器(我只是在这里添加我的):
# 2 楼答案
你忘了引用电话经理的话了吗
试试这个: