Android 设置按钮在通话时间被禁用
我有一个应用程序,可以通过点击呼叫按钮拨打号码。这里是按钮的代码Android 设置按钮在通话时间被禁用,android,Android,我有一个应用程序,可以通过点击呼叫按钮拨打号码。这里是按钮的代码onClickListener Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + obj.getPhoneNumber())); callIntent.setData(Uri.parse("tel:" + obj.getPhoneNumber())); callIn
onClickListener
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + obj.getPhoneNumber()));
callIntent.setData(Uri.parse("tel:" + obj.getPhoneNumber()));
callIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(callIntent);
如何在电话呼叫开始时禁用此按钮,并在电话呼叫结束时启用?我的问题是,当拨号程序启动时,用户可以点击按钮两次,拨号程序在后台运行(不在任务顶部)
将这一行添加到您的
startActivity(callIntent);
这可以通过在
活动
类中使用并注册PhoneStateListener
(请参阅)来实现
文档说明该类如下所示:
监听器类,用于监视设备上特定电话状态的变化,包括服务状态、信号强度、消息等待指示器(语音邮件)等
通过使用如下内部类,可以在活动
或片段
中轻松注册:
Button myButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton = findViewById(R.id.mybutton);
TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
TelephonyMgr.listen(new MyListener(),
PhoneStateListener.LISTEN_CALL_STATE);
}
public void enableButton(){
myButton.setEnabled(true);
}
public void disableButton(){
myButton.setEnabled(false);
}
class MyListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
// CALL_STATE_IDLE
enableButton();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
//CALL_STATE_OFFHOOK
disableButton();
break;
case TelephonyManager.CALL_STATE_RINGING:
// CALL_STATE_RINGING
disableButton();
break;
default:
break;
}
}
}
这将需要清单中的读取电话状态
权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
设备的呼叫状态列表在
TelephonyManager
-中定义,当电话呼叫结束时,启用按钮如何?添加phoneStateLister,然后在呼叫结束时重新启用它。您需要为此编写自己的自定义类。
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>