如何知道调用意图是在后台运行还是在前台运行?

时间:2016-12-19 07:39:50

标签: android android-intent call

我在Android中使用电话意图如下:

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+Uri.encode(phone_num.trim())));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(callIntent);

包名称为com.android.incallui。我想知道调用GUI是在后台运行还是在前台运行。因此,我创建了一个函数checkcallingGUI,如果调用的GUI在前台运行,它将返回true,如果调用的电话在后台运行,则返回false。有可能检查一下吗?谢谢所有

1 个答案:

答案 0 :(得分:0)

您需要在listener个致电状态TelephonyManagerIDLEOFFHOOK上注册RINGING,并使用上次收到的状态了解是否呼叫目前正在进行中。

使用此方法注册侦听器: https://developer.android.com/reference/android/telephony/TelephonyManager.html#listen(android.telephony.PhoneStateListener, int)

在此处阅读可能的陈述及其含义: https://developer.android.com/reference/android/telephony/TelephonyManager.html#CALL_STATE_IDLE

在此处查看完整代码: https://stackoverflow.com/a/14537914/819355

修改

您可以使用KeyguardManager服务检查设备当前是否已锁定/安全,请参阅此方法: https://developer.android.com/reference/android/app/KeyguardManager.html#isKeyguardLocked()

如果我没弄错的话,如果通话状态不是IDLE,并且启用了键盘锁,你将获得全屏UI,如果没有,它应该在后台。

尝试这样的事情:

KeyguardManager kg = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if (kg.isKeyguardLocked()) {
   // If telephony-state is also not IDLE, then the call UI should be full screen.
}