這可以通過使用來實現後並在Activity
課程中註冊PhoneStateListener
(請參閱docs)。
該文檔說明這類如下:
用於在設備上在特定電話狀態的變化進行監測,包括服務狀態的偵聽器類,信號強度,消息等待指示器(語音郵件),以及其他。
它可以在你的Activity
或Fragment
很容易地註冊使用一個內部類,像這樣:
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"/>
名單這將需要READ_PHONE_STATE
許可呼叫狀態的設備定義在TelephonyManager
- see docs
當通話結束時,啓用按鈕怎麼樣? –
添加phoneStateLister,然後在通話完成後重新啓用它。你需要爲此編寫自己的自定義類。 – Android