gpt4 book ai didi

android - 通话时间禁用设置按钮

转载 作者:行者123 更新时间:2023-11-30 01:54:54 26 4
gpt4 key购买 nike

我有一个应用程序,可以通过单击“调用”按钮调用号码。这里是按钮 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);

如何在通话开始时禁用此按钮,并在通话结束时启用?我的问题是用户可以在拨号程序启动时单击按钮两次,并且拨号程序在后台运行(不是在任务之上)

最佳答案

这可以通过在您的 Activity 类中使用和注册一个 PhoneStateListener(参见 docs)来实现。

文档声明此类如下:

A listener class for monitoring changes in specific telephony states on the device, including service state, signal strength, message waiting indicator (voicemail), and others.

它可以很容易地注册到您的 ActivityFragment 中,方法是使用这样的内部类:

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;
}
}
}

这将需要 list 中的READ_PHONE_STATE权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

设备的调用状态列表在 TelephonyManager 中定义 - see docs

关于android - 通话时间禁用设置按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32399176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com