从 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,以便用户可以叫它。
考虑到这一点 -
在 phone 上它往往是 phone 应用程序,或者如果有多个应用程序可以拨打电话
在安装了可以拨打电话的应用程序(例如 Skype)的 PC 上,单击 tel://
link 往往会默认通过它打开它(浏览器通常会询问事先)
四处搜索,到目前为止,我已经找到了 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"。
见
我正在使用 C# 中的 WinRT 开发 Windows 商店应用程序。
我想创建一个按钮或一个 link 用户可以 click/tap,并使用设备的默认应用程序来拨打 phone 电话。
更好的是,如果用户可以选择要使用的应用程序(如果安装了多个应用程序),那也很好。
我正在寻找与您如何从 Web 浏览器中单击 tel://01234567890
link 类似的行为,浏览器将其传递给 phone/device,以便用户可以叫它。
考虑到这一点 -
在 phone 上它往往是 phone 应用程序,或者如果有多个应用程序可以拨打电话
在安装了可以拨打电话的应用程序(例如 Skype)的 PC 上,单击
tel://
link 往往会默认通过它打开它(浏览器通常会询问事先)
四处搜索,到目前为止,我已经找到了 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"。
见