Начальная информация
Использование Xamarin.Forms в сообществе Visual Studio 2019 в Windows 10.
В моем приложении есть страница О программе, которая ссылается на адрес клиента, номер телефона и адрес электронной почты.
Я - новичок в разработке мобильных приложений. Я создал только одно более или менее идентичное приложение до этого и до предстоящего обновления.
До:
Я использовал Device.OpenUri(new System.Uri(url))
до того, как все ссылки работали нормально, т.е. ,вышеупомянутые ссылки открываются в Google Maps, Phone Caller App и Gmail соответственно.
Начиная с версии Xamarin.Forms 4.3.0 Device.OpenUri
устарела.
Перемещение между ними:
Я заменил Device.OpenUri
на Launcher.TryOpenAsync
из Xamarin.Essentials.
Ни одна из ссылок ничего не сделала.
Сейчас:
Вместо этого я заменилэто с Browser.OpenAsync(new System.Uri(url), BrowserLaunchMode.SystemPreferred)
Ссылка на адрес goo.gl/maps открывает приложение Карты по правильному адресу. Хорошо.
Ссылка на "тел: +99912345678" открывает звонящего по правильному номеру телефона. Хорошо.
Ссылка на "mailto: address@domain.tld" открывает Gmail (хорошо), но получатель //domain.tld
вместо address@domain.tld
. Плохо.
Код:
AboutViewModel.cs
using System;
using System.Windows.Input;
using Xamarin.Forms;
using Xamarin.Essentials;
namespace Domain.ViewModels
{
public class AboutViewModel : BaseViewModel
{
public AboutViewModel()
{
Title = "About";
}
public ICommand ClickCommand => new Command<string>((url) =>
{
//Device.OpenUri(new System.Uri(url));
//Launcher.TryOpenAsync(new System.Uri(url));
Browser.OpenAsync(new System.Uri(url), BrowserLaunchMode.SystemPreferred);
});
}
}
AboutPage.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"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:Domain.ViewModels"
mc:Ignorable="d"
x:Class="Domain.Views.AboutPage"
Title="{Binding Title}">
<ContentPage.BindingContext>
<vm:AboutViewModel />
</ContentPage.BindingContext>
...
<Label Grid.Row="0" Grid.Column="1"
VerticalOptions="CenterAndExpand" >
<Label.FormattedText>
<FormattedString>
<FormattedString.Spans>
<Span Text="Street" >
<Span.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ClickCommand}"
CommandParameter="https://goo.gl/maps/xxxxxxxxxxxxxxxxx" />
</Span.GestureRecognizers>
</Span>
</FormattedString.Spans>
</FormattedString>
</Label.FormattedText>
</Label>
...
<Label Grid.Row="1" Grid.Column="1"
VerticalOptions="CenterAndExpand" >
<Label.FormattedText>
<FormattedString>
<FormattedString.Spans>
<Span Text="+999 (0)12 345 678" >
<Span.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ClickCommand}"
CommandParameter="tel:0099912345678" />
</Span.GestureRecognizers>
</Span>
</FormattedString.Spans>
</FormattedString>
</Label.FormattedText>
</Label>
...
<Label Grid.Row="2" Grid.Column="1"
VerticalOptions="CenterAndExpand" >
<Label.FormattedText>
<FormattedString>
<FormattedString.Spans>
<Span Text="address@domain.tld" >
<Span.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ClickCommand}"
CommandParameter="mailto:address@domain.tld" />
</Span.GestureRecognizers>
</Span>
</FormattedString.Spans>
</FormattedString>
</Label.FormattedText>
</Label>
...
AboutPage.xaml.cs
using System.ComponentModel;
using Xamarin.Forms;
namespace Domain.Views
{
// Learn more about making custom code visible in the Xamarin.Forms previewer
// by visiting https://aka.ms/xamarinforms-previewer
[DesignTimeVisible(false)]
public partial class AboutPage : ContentPage
{
public AboutPage()
{
InitializeComponent();
}
}
}
Вопрос
В чем моя ошибка?