Если я вас правильно понял, вы хотите иметь возможность выбрать способ открытия веб-ссылки - внутри вашего приложения или в контексте другого приложения (браузера).
Если это верно, то вы может использовать Xamarin.Essentials: браузер функциональность.
public async Task OpenBrowser(Uri uri)
{
await Browser.OpenAsync(uri, BrowserLaunchMode.SystemPreferred);
}
Здесь важным свойством является флаг BrowserLaunchMode
, о котором вы можете узнать больше здесь
В основном у вас есть 2 варианта - External
& SystemPreferred
.
- Первый вариант понятен, думаю - откроет ссылку во внешнем браузере.
- Второй вариант использует Android s Chrome Пользовательские вкладки и для iOS - SFSafariViewController
PS Вы также можете настроить PreferredToolbarColor
, TitleMode
и т.д. c.
Изменить: исходя из ваших отзывов в комментариях, вы хотите контролировать, как открывать href-ссылки со своего веб-сайта.
Если я правильно понял, вы хотите, чтобы при первом открытии сайта не было панели навигации вверху, а после этого она была. К сожалению, это невозможно.
Вы можете добиться противоположного поведения - когда вы впервые открываете веб-сайт, чтобы иметь панель навигации и, если пользователь нажимает на любую ссылку, открывать ее извне (внутри браузер). У вас есть 2 варианта:
- Чтобы сделать это со своего веб-сайта - измените цель тега
a
на _blank
как это ; - Чтобы сделать это из вашего мобильного приложения - создайте Custom Renderer для WebView. В реализации рендерера проекта Android измените
Control
s WebViewClient
следующим образом:
public class CustomWebViewClient : WebViewClient
{
public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request)
{
Intent intent = new Intent(Intent.ActionView, request.Url);
CrossCurrentActivity.Current.StartActivity(intent);
return true;
}
}