从 Windows Store App C# WinRT 拨打电话

Make telephone call from Windows Store App C# WinRT

我正在使用 C# 中的 WinRT 开发 Windows 商店应用程序。

我想创建一个按钮或一个 link 用户可以 click/tap,并使用设备的默认应用程序来拨打 phone 电话。

更好的是,如果用户可以选择要使用的应用程序(如果安装了多个应用程序),那也很好。


我正在寻找与您如何从 Web 浏览器中单击 tel://01234567890 link 类似的行为,浏览器将其传递给 phone/device,以便用户可以叫它。

考虑到这一点 -


四处搜索,到目前为止,我已经找到了 Windows Phone 8.1 的所有内容。但在 Win 8/8.1 中使用 Windows RunTime 的 Windows Store Apps 没有。

请注意:我不是特别希望从应用程序,更重要的是打开设备使用的默认应用程序。但是,我对选项持开放态度,所以如果还有一种方法可以从应用程序中执行此操作,我也会考虑。


这可能吗?是否有我可能需要的 API 或图书馆?

提前致谢。

我想出了一个解决方案来获得问题中描述的行为。

我在问题中使用了相同的 tel:// "link" 概念。

我想到的解决方案:

  • 创建一个 URI
  • 从应用程序启动它
  • 然后设备处理打开 URI;必要时询问使用哪个应用程序

这就像一行一样简单:

private async Task MakePhoneCall(string phoneNumber)
{
    await Launcher.LaunchUriAsync(new Uri($"tel://{phoneNumber}"));
}

Windows.System 命名空间 (using Windows.System;) 中找到 Launcher 静态 class。

希望这对以后的其他人有所帮助:)

@Geoff 有一个很好的答案,我还有一个。

您可以在移动设备上使用 PhoneCallManager 呼叫,在电脑上使用 Skype 呼叫。

如果该设备是移动设备并且您可以使用 Windows.ApplicationModel.Calls.PhoneCallManager.ShowPhoneCallUI 调用 number.And 它已检查该设备是移动设备。

if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
{
    Windows.ApplicationModel.Calls.PhoneCallManager
           .ShowPhoneCallUI("The number you call",
                            "The pople's name that is the number ower");
}

就是这样
(来源:9uads.com

使用时请包含Windows Mobile Extensions

如果你的设备是pc,你也可以用Skype打电话。

private async void Button_OnClick(object sender, RoutedEventArgs e)   
{
    Uri url=new Uri(@"Skype:number?call");
    var areSkypeCall = await Windows.System.Launcher.LaunchUriAsync(url);
    if (areSkypeCall)
    {
        //Success
    }
}

Uri格式为"Skype:"+号码+"?call"或"Skype:"+skype id+"?call"。