我在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。有可能检查一下吗?谢谢所有
答案 0 :(得分:0)
您需要在listener
个致电状态TelephonyManager
,IDLE
,OFFHOOK
上注册RINGING
,并使用上次收到的状态了解是否呼叫目前正在进行中。
在此处阅读可能的陈述及其含义: 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.
}