如何通过单击标签在 Xamarin.Forms 中进行 phone 调用?
How to make a phone call in Xamarin.Forms by clicking on a label?
你好,我在 Xamarin.Forms 中开发了一个应用程序,它从 Web 服务获取联系信息,然后在标签中显示该信息,但是我想制作列出 phone 号码在点击时拨打电话。我该怎么做?
这是我的XAML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="ReadyMo.ContactInfo">
<ContentPage.Content>
<Frame Padding="0,0,0,8" BackgroundColor="#d2d5d7">
<Frame.Content>
<Frame Padding="15,15,15,15" OutlineColor="Gray" BackgroundColor="White">
<Frame.Content>
<ScrollView Orientation="Vertical" VerticalOptions="FillAndExpand">
<StackLayout Padding="20,0,0,0" Orientation="Horizontal" HorizontalOptions="CenterAndExpand">
<StackLayout Orientation="Vertical" VerticalOptions="FillAndExpand">
<Label Text="Emergency Coordinators" HorizontalOptions="Center" FontFamily="OpenSans-Light"
FontSize="20"
TextColor="#69add1">
</Label>
<Label x:Name="CountyName" HorizontalOptions="Center" FontFamily="OpenSans-Light"
FontSize="16"
TextColor="#69add1">
</Label>
<Label x:Name="FirstName" HorizontalOptions="Center">
</Label>
<Label x:Name ="LastName" HorizontalOptions="Center">
</Label>
<Label x:Name="County" HorizontalOptions="Center">
</Label>
<Label x:Name ="Adress" HorizontalOptions="Center">
</Label>
<Label x:Name ="City" HorizontalOptions="Center">
</Label>
//This is the label that displays the phone number!
<Label x:Name="Number" HorizontalOptions="Center">
</Label>
</StackLayout>
</StackLayout>
</ScrollView>
</Frame.Content>
</Frame>
</Frame.Content>
</Frame>
</ContentPage.Content>
</ContentPage>
下面是我的代码:
using Newtonsoft.Json;
using ReadyMo.Data;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace ReadyMo
{
public partial class ContactInfo : ContentPage
{
private County item;
public ContactInfo()
{
InitializeComponent();
var contactpagetext = ContactManager.GetContactString(item.id);
}
public ContactInfo(County item)
{
InitializeComponent();
this.item = item;
//var contactpagetext = ContactManager.GetContactString(item.id).Result;
//Emergency Coordinators Code
ContactInfoModel TheContactInfo = ContactManager.CurrentContactInfo;
CountyName.Text = TheContactInfo.name;
FirstName.Text = TheContactInfo.First_Name;
LastName.Text = TheContactInfo.Last_Name;
Adress.Text = TheContactInfo.Address1;
City.Text = TheContactInfo.Address2;
Number.Text = TheContactInfo.BusinessPhone;
}
}
}
提前致谢!
Label 不是交互式的,因此您需要使用 Gesture 使其响应点击:
var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
// handle the tap
};
// attache the gesture to your label
number.GestureRecognizers.Add(tapGestureRecognizer);
要进行 phone 调用,您可以使用内置的 Device.OpenUri() method with a "tel:1234567890" argument, or use the Messaging 插件:
var phoneDialer = CrossMessaging.Current.PhoneDialer;
if (phoneDialer.CanMakePhoneCall)
phoneDialer.MakePhoneCall("+272193343499");
快速使用 Xamarin Forms 中 phone 的拨号器应用程序的快速片段:
var CallUsLabel = new Label { Text = "Tap or click here to call" };
CallUsLabel.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(() => {
// Device.OpenUri(new Uri("tel:038773729")); // Deprecated
Launcher.OpenAsync("tel:038773729");
}) });
Xamarin Essentials PhoneDialer
public void PlacePhoneCall(string number)
{
try
{
PhoneDialer.Open(number);
}
catch (ArgumentNullException anEx)
{
// Number was null or white space
}
catch (FeatureNotSupportedException ex)
{
// Phone Dialer is not supported on this device.
}
catch (Exception ex)
{
// Other error has occurred.
}
}
Device.OpenUri()
已过时。使用 Xamarin.Essentials
:
Launcher.OpenAsync("tel:" + PhoneNumber);
你好,我在 Xamarin.Forms 中开发了一个应用程序,它从 Web 服务获取联系信息,然后在标签中显示该信息,但是我想制作列出 phone 号码在点击时拨打电话。我该怎么做?
这是我的XAML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="ReadyMo.ContactInfo">
<ContentPage.Content>
<Frame Padding="0,0,0,8" BackgroundColor="#d2d5d7">
<Frame.Content>
<Frame Padding="15,15,15,15" OutlineColor="Gray" BackgroundColor="White">
<Frame.Content>
<ScrollView Orientation="Vertical" VerticalOptions="FillAndExpand">
<StackLayout Padding="20,0,0,0" Orientation="Horizontal" HorizontalOptions="CenterAndExpand">
<StackLayout Orientation="Vertical" VerticalOptions="FillAndExpand">
<Label Text="Emergency Coordinators" HorizontalOptions="Center" FontFamily="OpenSans-Light"
FontSize="20"
TextColor="#69add1">
</Label>
<Label x:Name="CountyName" HorizontalOptions="Center" FontFamily="OpenSans-Light"
FontSize="16"
TextColor="#69add1">
</Label>
<Label x:Name="FirstName" HorizontalOptions="Center">
</Label>
<Label x:Name ="LastName" HorizontalOptions="Center">
</Label>
<Label x:Name="County" HorizontalOptions="Center">
</Label>
<Label x:Name ="Adress" HorizontalOptions="Center">
</Label>
<Label x:Name ="City" HorizontalOptions="Center">
</Label>
//This is the label that displays the phone number!
<Label x:Name="Number" HorizontalOptions="Center">
</Label>
</StackLayout>
</StackLayout>
</ScrollView>
</Frame.Content>
</Frame>
</Frame.Content>
</Frame>
</ContentPage.Content>
</ContentPage>
下面是我的代码:
using Newtonsoft.Json;
using ReadyMo.Data;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace ReadyMo
{
public partial class ContactInfo : ContentPage
{
private County item;
public ContactInfo()
{
InitializeComponent();
var contactpagetext = ContactManager.GetContactString(item.id);
}
public ContactInfo(County item)
{
InitializeComponent();
this.item = item;
//var contactpagetext = ContactManager.GetContactString(item.id).Result;
//Emergency Coordinators Code
ContactInfoModel TheContactInfo = ContactManager.CurrentContactInfo;
CountyName.Text = TheContactInfo.name;
FirstName.Text = TheContactInfo.First_Name;
LastName.Text = TheContactInfo.Last_Name;
Adress.Text = TheContactInfo.Address1;
City.Text = TheContactInfo.Address2;
Number.Text = TheContactInfo.BusinessPhone;
}
}
}
提前致谢!
Label 不是交互式的,因此您需要使用 Gesture 使其响应点击:
var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
// handle the tap
};
// attache the gesture to your label
number.GestureRecognizers.Add(tapGestureRecognizer);
要进行 phone 调用,您可以使用内置的 Device.OpenUri() method with a "tel:1234567890" argument, or use the Messaging 插件:
var phoneDialer = CrossMessaging.Current.PhoneDialer;
if (phoneDialer.CanMakePhoneCall)
phoneDialer.MakePhoneCall("+272193343499");
快速使用 Xamarin Forms 中 phone 的拨号器应用程序的快速片段:
var CallUsLabel = new Label { Text = "Tap or click here to call" };
CallUsLabel.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(() => {
// Device.OpenUri(new Uri("tel:038773729")); // Deprecated
Launcher.OpenAsync("tel:038773729");
}) });
Xamarin Essentials PhoneDialer
public void PlacePhoneCall(string number)
{
try
{
PhoneDialer.Open(number);
}
catch (ArgumentNullException anEx)
{
// Number was null or white space
}
catch (FeatureNotSupportedException ex)
{
// Phone Dialer is not supported on this device.
}
catch (Exception ex)
{
// Other error has occurred.
}
}
Device.OpenUri()
已过时。使用 Xamarin.Essentials
:
Launcher.OpenAsync("tel:" + PhoneNumber);