gpt4 book ai didi

java - 当用户接听电话和关闭通话时执行某些操作以及如何关闭通话

转载 作者:行者123 更新时间:2023-12-02 06:23:50 25 4
gpt4 key购买 nike

我使用此代码来调用:

Uri callUri = Uri.parse("tel://911");
Intent callIntent = new Intent(Intent.ACTION_CALL,callUri);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
startActivity(callIntent);

我想在用户关闭通话时执行某些操作

提前致谢

最佳答案

首先,在 list 中注册以下权限:

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

然后,一个名为 OutCallLogger 的 BroadcastReceiver 会在每次拨出电话时捕获 NEW_OUTGOING_CALL 事件

在 list 中注册您的接收器

<receiver android:name=".listener.OutCallLogger">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>

接下来,OutCallLogger 的实现。设置一个名为 noCallListenerYet 的 boolean 值,以避免在调用 onReceive() 时将新的 PhoneStateListener 附加到 TelephonyManager。

public class OutCallLogger extends BroadcastReceiver {

private static boolean noCallListenerYet = true;

@Override
public void onReceive(final Context context, Intent intent) {
number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
if (noCallListenerYet) {
final TelephonyManager tm = (TelephonyManager) context.getSystemService(
Context.TELEPHONY_SERVICE);
tm.listen(new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
Log.d(This.LOG_TAG, "RINGING");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(This.LOG_TAG, "OFFHOOK");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.d(This.LOG_TAG, "IDLE");
break;
default:
Log.d(This.LOG_TAG, "Default: " + state);
break;
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
noCallListenerYet = false;
}
}

此处 TelephonyManager.CALL_STATE_IDLE: 当用户按结束通话时调用状态。

希望对您有帮助。

关于java - 当用户接听电话和关闭通话时执行某些操作以及如何关闭通话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20772770/

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