Когда я открываю встроенный браузер Android по умолчанию, он открывает две вкладки вместо одной.
У меня есть MainPage и Page1. В MainPage у меня есть кнопка, которая направляет пользователя на Page1.
Page1.xaml не имеет ничего особенного, поскольку это шаблон XAML по умолчанию.
Page1.xaml.cs:
public partial class Page1 : ContentPage
{
public Page1 ()
{
InitializeComponent ();
}
protected override void OnAppearing()
{
base.OnAppearing();
Device.OpenUri(new Uri("https://stackoverflow.com"));
}
}
Проблема: Когда я вхожу на страницу Page1, браузер Android по умолчанию (т. Е. Google Chrome) открывает две вкладки веб-сайта https://stackoverflow.com вместо одной.
Обновление: Когда я отлаживал, я заметил, что эта проблема возникает, только если мы используем Device.OpenUri в OnAppearing () метод, поскольку это не будет происходит, если используется в конструкторе.
Обновление: Я пытался использовать нативный (например, Android) механизм через DependancyService, но это тоже не сработало:
var uri = Android.Net.Uri.Parse("https://stackoverflow.com");
var intent = new Intent(Intent.ActionView, uri );
intent.SetFlags(ActivityFlags.NewTask);
Application.Context.StartActivity(intent);
Так что я думаю, что эта проблема должна быть со стороны Android, а не Xamarin.Forms.
Обновление: Странно, если я поставлю задержку перед открытием браузера, как в коде ниже, проблема больше не возникает:
protected override async void OnAppearing()
{
base.OnAppearing();
await Task.Delay(500);
Device.OpenUri(new Uri("https://stackoverflow.com"));
}
Хотя это может быть временное решение этой проблемы, я надеюсь, однако, кто-то найдет решение для этой проблемы.