电话接收呼叫时发生事件

本文关键字:事件 呼叫 电话 | 更新日期: 2023-09-27 18:00:57

我正在开发一个Windows Phone应用程序,我不知道当屏幕上显示某个页面,手机接到电话时,会发生哪个事件?我如何订阅该活动?

我尝试检查应用程序停用事件和RunningInBackground事件,但它没有被解雇。这是一个愚蠢的问题,但在互联网上找不到任何可以理解的东西。是页面级别还是应用程序级别?

电话接收呼叫时发生事件

您可以使用"不可见"answers"未订阅"事件,当Windows Phone Shell覆盖您的应用程序窗口时会发生这些事件。

这是什么意思?当你在windows手机上接到电话时,你的应用程序窗口会被"来电视图"覆盖。当你手机中的闹钟响起时,会出现一个覆盖30%屏幕的视图,部分覆盖你的应用程序视图。

这些视图在您的应用程序上触发被遮挡的事件。

来自MSDN:

没有迹象表明哪个或哪些外壳是镀铬的正在模糊应用程序。应用程序将获得Obscured如果已经存在一些覆盖屏幕的UI。但是,当应用程序在使用过程中被导航离开。

你可以在这里获得更多信息:

遮蔽事件

未订阅事件

最后,如何用一个只能在设备上运行的简单例子来使用它们:


主页.xaml

<TextBlock Name="txtObs" Grid.Column="0" Margin="0,10,0,0" Grid.Row="2"/>
<TextBlock Name="txtUnobs" Grid.Column="0" Margin="0,80,0,0" Grid.Row="2"/>

主页.xaml.cs

在构造函数中添加:

PhoneApplicationFrame rootFrame = (Application.Current as App).RootFrame;
rootFrame.Obscured += OnObscured;
rootFrame.Unobscured += Unobscured;

然后在它之外:

void OnObscured(Object sender, ObscuredEventArgs e)
{
   txtObs.Text = "Obscured at "  + DateTime.Now.ToString();
}
void Unobscured(Object sender, EventArgs e)
{
   txtUnobs.Text = "Unobscured at "  + DateTime.Now.ToString();
}

需要记住的一点是,为了在锁定模式下运行应用程序,需要禁用ApplicationIdleDetectionMode

PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;

试试看!