gpt4 book ai didi

android - 在 Android 的 TelephonyManager.CALL_STATE_RINGING 上将默认来电屏幕移至后台

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:08 26 4
gpt4 key购买 nike

我正在开发一个应用程序,我必须在其中覆盖传入调用屏幕。

当设备接到电话时,我必须显示我的应用程序的弹出窗口。我对这个任务做了详细的研究。 CALL POPOUT 是一个使用相同功能的应用程序,但我没有获得源代码。

目前我有几个模块可以用来获取 INCOMING CALL 的 Action 。

public class MyPhonestateListner extends PhoneStateListener {
Context context;
List<String> blockedNumberList = new ArrayList<String>();
BlockDataSource datasourceobj;

public MyPhonestateListner(Context context) {
super();
this.context = context;

}

@Override
public void onCallStateChanged(int state, String callingNumber) {
super.onCallStateChanged(state, callingNumber);
callingNumber = callingNumber.replace(" ", "");
switch (state) {

case TelephonyManager.CALL_STATE_IDLE:
break;

case TelephonyManager.CALL_STATE_OFFHOOK:
// handle out going call
// if(blockedNumberList.contains(callingNumber))
endCallIfBlocked(callingNumber);
break;

case TelephonyManager.CALL_STATE_RINGING:
// handle in coming call
new Handler().postDelayed(new Runnable() {
public void run() {
Intent intentPhoneCall = new Intent("android.intent.action.CALL");
intentPhoneCall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intentPhoneCall);
}
}, 10);
// if(blockedNumberList.contains(callingNumber))
//endCallIfBlocked(callingNumber);
// ActivityManagerNative.getDefault().moveTaskToBack(i);
//android.app.ActivityManager.RunningTaskInfo runningtaskinfo = TaskUtil.getPresentTaskInfo(this);
break;

default:
break;
}
}


}


MY reciever

public class BlockReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("I am reciever");
TelephonyManager telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
MyPhonestateListner listener = new MyPhonestateListner(context);
telephony.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
}
}

在上述代码的帮助下,我将我的应用程序的 MAP 屏幕显示在调用屏幕的顶部,但只有几微秒,然后传入调用屏幕出现在顶部。当设备收到任何调用并需要显示我的应用程序屏幕时,我必须隐藏调用屏幕。

请提出建议。

最佳答案

当有来电时,您的 Activity 和默认的来电 Activity 都会显示。如果您的 Activity 首先显示,然后传入的 Activity 将显示在您的 Activity 之上,它是任务和返回堆栈的东西。

解决方案:当您的 Activity 正在显示时,检查传入的 Activity 是否显示在您的之上 --> 再次将您的 Activity 移至顶部,除非用户关闭您的 Activity。

请参阅我对 similar question here 的回答

关于android - 在 Android 的 TelephonyManager.CALL_STATE_RINGING 上将默认来电屏幕移至后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27524585/

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