如果我理解正确的话,您希望能够选择如何打开 Web 链接 - 在您的应用程序内部或在另一个应用程序(浏览器)上下文中。
如果这是正确的,那么您可以使用Xamarin.Essentials:浏览器 https://learn.microsoft.com/en-us/xamarin/essentials/open-browser?tabs=android功能。
public async Task OpenBrowser(Uri uri)
{
await Browser.OpenAsync(uri, BrowserLaunchMode.SystemPreferred);
}
这里重要的属性是BrowserLaunchMode
标志,您可以了解更多信息here https://learn.microsoft.com/en-us/dotnet/api/xamarin.essentials.browserlaunchmode?view=xamarin-essentials
基本上,你有 2 个选择 -External
& SystemPreferred
.
- 我认为第一个很清楚 - 它将在外部浏览器中打开链接。
- 第二个选项利用了 Android 的优势Chrome 自定义标签 https://developer.chrome.com/multidevice/android/customtabs对于 iOS -SFSafariViewController https://learn.microsoft.com/en-us/dotnet/api/safariservices.sfsafariviewcontroller?view=xamarin-ios-sdk-12
附:您还可以自定义PreferredToolbarColor
, TitleMode
, etc.
编辑:根据您在评论中的反馈,您希望控制如何从您的网站打开 href 链接。
如果我理解正确的话,您希望第一次打开网站时不要在顶部显示导航栏,然后再打开它。不幸的是,这是不可能的。
您可以实现相反的行为 - 第一次打开网站时,有导航栏,如果用户单击任何链接,则从外部打开它(在浏览器内)。为此,您有 2 个选择:
- 要从您的网站执行此操作 - 更改
a
标签的目标是_blank
like this https://html.com/attributes/a-target/;
- 要从您的移动应用程序执行此操作 - 创建一个自定义渲染器 https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/对于 Web 视图。在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;
}
}