【问题标题】:Make telephone call from Windows Store App C# WinRT从 Windows Store App C# WinRT 拨打电话
【发布时间】:2016-10-03 10:08:41
【问题描述】:

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

我想创建一个用户可以单击/点击的按钮或链接,并使用设备的默认应用程序来拨打电话。

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


我正在寻找与您从网络浏览器单击 tel://01234567890 链接类似的行为,然后浏览器将其交给手机/设备,以便用户可以调用它。

考虑到这一点 -

  • 在手机上,它往往是电话应用程序,或者是一个选项来选择是否有多个应用程序可以拨打电话

  • 在安装了可以拨打电话的应用程序(例如 Skype)的 PC 上,单击 tel:// 链接往往会默认通过该链接打开它(浏览器通常会事先询问)


到目前为止,我已经找到了适用于 Windows Phone 8.1 的所有内容。但对于在 Win 8/8.1 中使用 Windows RunTime 的 Windows 应用商店应用程序来说没有任何意义。

请注意:我并不是专门希望从应用程序拨打电话,更重要的是打开设备的默认应用程序用途。不过,我对选项持开放态度,所以如果在应用程序中也有办法做到这一点,我也会考虑这样做。


这可能吗?是否有我可能需要的 API 或库?

提前谢谢你。

【问题讨论】:

    标签: c# windows-runtime windows-store-apps win-universal-app phone-call


    【解决方案1】:

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

    我使用了与我在问题中提到的相同的tel://“链接”概念。

    我想出的解决方案:

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

    这就像一行一样简单:

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

    Launcher 静态类位于 Windows.System 命名空间 (using Windows.System;) 中。

    希望这将在未来对其他人有所帮助:)

    【讨论】:

      【解决方案2】:

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

      当设备是移动设备时,您可以使用PhoneCallManager 进行呼叫,当设备是PC 时,您可以使用Skype 进行呼叫。

      如果设备是移动的,您可以使用Windows.ApplicationModel.Calls.PhoneCallManager.ShowPhoneCallUI拨打该号码。并且已检查该设备是移动的。

      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:”+number+“?call”或“Skype:”+skype id+“?call”。

      UWP use skype to call number

      【讨论】:

      • 嗨@lindexi - 谢谢你的回答。不幸的是,这是一个适用于 Windows 运行时的应用商店应用程序,而不是我在问题中提到的适用于 Windows Phone 8/8.1 的应用程序,因此我将无法使用您对 PhoneCallManager 的建议。至于使用Launcher 类,如果可能的话,我宁愿不要只使用Skype——以防万一还有其他可以拨打电话的应用程序。该应用程序当前正在迁移到 UWP,因此我会记住您在 UWP 上使用 Skype 的链接。再次感谢您的努力:)
      • 抱歉帮不了你。我看到win8.1应用程序是uwp,这是我的错误。
      猜你喜欢
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 2017-12-21
      • 2014-06-26
      相关资源
      最近更新 更多