直接在Xamarin.Forms中拨打电话

15
有没有办法在Xamarin.Forms中直接打电话而不用打开拨号器?
 if (device.PhoneService != null) {
    Device.OpenUri(new Uri("tel:123123123"));
 }

你是否看过XLabs?这里有一个PhoneCallTask,可能能满足你的要求,请查看此处链接:https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/src/Platform/XLabs.Platform.WP8/Services/PhoneService.cs - TResponse
@loanburger 这正是我所使用的。但它显示拨号器。 - Nima
如果您请求android.permission.CALL_PHONE清单权限,可以使用带有Intent.ACTION_CALL的活动在Android上传递拨号器,但是iOS不允许这样做,您将会得到拨号器。 - SushiHangover
我应该如何在Xamarin.Forms中使用INTENT? - Nima
3个回答

6
当我们编写代码以启动语音通话时,必须了解Xamarin.Forms中的DependencyService
Xamarin.Forms中的DependencyService提供对iOS、Android和Windows Phone SDK的本机功能和一些特定于平台的实现的访问,可以从您的PCL或共享项目中访问。
要启动语音通话,需要一些特定于平台的实现和权限。
以下是在Xamarin.Forms中实现语音通话的过程。让我们创建一个ContentPage,并添加一个输入框和一个按钮作为HomePage.cs。 enter image description here (来源:netdna-cdn.com)
  1. 在共享代码中创建一个名为IPhoneCall.cs的接口,展示我们想要实现的功能。

enter image description here
(来源: netdna-cdn.com)

  1. 该接口必须在每个特定于平台的应用程序项目中实现。

Android实现:在Android中实现接口之前,请不要忘记在AndroidManifest.xml中设置一些权限。这些权限对于在Android中调用语音呼叫是必要的。

输入图像描述
(来源: netdna-cdn.com)

设置权限后,我们必须使用一个小类PhoneCall_Droid.cs来实现接口。

输入图像描述
(来源: netdna-cdn.com)

参考iOS和Windows实现示例。

  1. 我们已经完成了接口的实现并注册了每个特定的平台。现在我们可以编写DependencyService来获取接口的实例。

输入图像描述
(来源: netdna-cdn.com)


示例:http://www.c-sharpcorner.com/UploadFile/e4bad6/code-to-start-call-in-xamarin-forms

(该示例演示如何在Xamarin Forms中启动电话呼叫。)

3

谢谢,但它不会直接拨打电话!它会打开拨号器,我不知道为什么! - Nima
var dialIntent = new Intent(Intent.ActionDial, telUri); https://github.com/cjlotz/Xamarin.Plugins/blob/master/Messaging/Lotz.Xam.Messaging.Android/PhoneCallTask.cs#L31 - Nima

0

在移动设备上,当您拨打电话时,设备总是显示拨号器,以便用户可以挂断、切换到蓝牙设备、静音等。这就是移动设备上启动拨号器的工作方式。在iOS上,通话结束后,用户仍将停留在您的应用程序中。下面的问题讨论了如何在Android上在通话结束后将用户带回您的应用程序:

如何在Android上拨打电话并在通话结束后返回我的活动?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接