c# - 如何在Windows Phone 10中检测电话挂断

标签 c# windows-phone uwp

我想以编程方式检测 Windows Phone 10 的 UWP 应用程序何时挂断电话。

我看到 Caller ID sample并查看 Communication blocking and filtering sample也是。

但我没有找到检测挂断电话的简单解决方案。我找到了 CallHistoryChanged触发器,我认为我的复杂解决方案是在调用历史记录更改时读取调用历史记录触发器并获取最后一个来电。

有没有简单的检测挂断的方法?

我的解决方案是否正确? 有没有比我的解决方案更好的解决方案?

最佳答案

Is there any simple solution for detect call hang up? Is my solution is correct? Is there a better solution than my solution?

据我所知,没有其他简单的检测调用挂断的解决方案。

有一个事件PhoneCallManager.CallStateChanged , 它也可以像下面这样检测挂断:

private bool callCame = false;

PhoneCallManager.CallStateChanged += PhoneCallManager_CallStateChanged;

private async void PhoneCallManager_CallStateChanged(object sender, object e)
{
    if (callCame&&(!PhoneCallManager.IsCallActive))
    {
        //do something
    }
    if (PhoneCallManager.IsCallIncoming)
    {
        callCame = true;
    }
}

但我不认为它比 CallHistoryChanged 触发器更好。而且它也不会给你最后挂断电话的号码。

Is my solution is correct?

是的,您的解决方案是正确的。

更新:这里没有技巧。注册后台任务:

private void btnClick_Click(object sender, RoutedEventArgs e)
{
    var taskRegistered = false;
    var exampleTaskName = "MyBackgroundTask";

    foreach (var task in BackgroundTaskRegistration.AllTasks)
    {
        if (task.Value.Name == exampleTaskName)
        {
            taskRegistered = true;
            break;
        }
    }

    if (!taskRegistered)
    {
        var builder = new BackgroundTaskBuilder();

        builder.Name = exampleTaskName;
        builder.TaskEntryPoint = "PhoneCallBackground.Class1";
        builder.SetTrigger(new PhoneTrigger(Windows.ApplicationModel.Calls.Background.PhoneTriggerType.CallHistoryChanged, false));
            builder.Register();
    }
}

并且不要忘记在 appxmanifest 文件中注册它: enter image description here

如果您注册了 BackgroundTask,Run 方法将在您挂机后触发。 PhoneCallManager 无法注册 BackgroundTask。如果您想使用它,您需要将其设置为默认的 PhoneCall 应用程序。

更新2:

我查看了demo,你还在使用PhoneTriggerType.CallOriginDataRequest注册后台任务。请将其更改为 PhoneTriggerType.CallHistoryChanged。还要确保在对代码进行任何更改后取消注册已注册的后台任务。

这是我修改的演示:CallHistoryChangeTest .

关于c# - 如何在Windows Phone 10中检测电话挂断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39789076/

相关文章:

c# - Windows Phone 8.1 和 CurrentAppSimulator

ionic2 - 在 Windows Phone 10 上运行 Ionic 2 应用程序

string - 从命令行 cmd 启动 Windows 10 UWP 应用程序

azure - 使用 UWP 中的 Azure 移动客户端 LoginAsync 方法进行身份验证 - 未经授权

c# - 在移动设备上忽略网格上的滑动

c# - 基于winforms中的鼠标单击查找到对象的最短距离

c# - 有没有办法通过 UserPrincipal 类设置新用户的域后缀?

c# - 比较调用 C dll 的 C# 中的字符串

c# - WPF检查系统上是否安装了python

c# - 从当前方向旋转网络浏览器正在拉伸(stretch)(缩放)网络浏览器内容 Windows Phone