如何在 Xamarin 中打开默认浏览器?

Posted

技术标签:

【中文标题】如何在 Xamarin 中打开默认浏览器?【英文标题】:How to open default browser in Xamarin? 【发布时间】:2018-03-18 20:28:52 【问题描述】:

我想在 Xamarin 中为 androidios 打开一个网页,但代码不起作用。谁能帮我找出问题所在?

对于 Android,单击按钮会遍历代码,但之后什么也没有发生。对于 iOS,单击该按钮会打开一个 Safari 页面,但它无法打开该页面,并显示一条消息“Safari 无法打开该页面,因为服务器停止响应。”

通过的测试参数是:“http://www.google.com”

谢谢。

代码:

    async Task ExecuteLaunchBrowserAsync(string arg)
    
        if (IsBusy)
            return;

        try
        
            await CrossShare.Current.OpenBrowser(arg, new BrowserOptions
            
                ChromeShowTitle = true,
                ChromeToolbarColor = new ShareColor
                
                    A = 255,
                    R = 100,
                    G = 50,
                    B = 255
                ,
                UseSafariReaderMode = true,
                UseSafariWebViewController = true
            );
        
        catch
        
        
    

【问题讨论】:

你试过Device.OpenUri()吗? 谢谢。我使用的是 NuGet 插件,但这让我很难过。你的方法好多了。感谢分享。 【参考方案1】:

你只需要使用blow code,它适用于Android和iOS。

void Device.OpenUri(Uri uri)

例如。

Device.OpenUri(new Uri("http://example.com"))

要在 iOS 中工作,请使用 Info.plist 中的传输安全性

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key><true/>
</dict>

http://i.imgur.com/qqP7KHp.gif

【讨论】:

正是我需要的。谢谢。 Device 不是 Xamarin 命名空间或我项目中的任何其他命名空间中的类。你在哪里找到的? @BlueMonkMN 它仅来自 xamarin.forms。 Xamarin.Forms.Device.OpenUri()【参考方案2】:

上面的“Device.OpenUri();”现在已被弃用,因此您必须使用“Launcher.OpenAsync();”而是这样:

await Launcher.OpenAsync(new Uri("http://example.com"))

请在此处查看文档: https://docs.microsoft.com/en-us/dotnet/api/xamarin.essentials.launcher.openasync

【讨论】:

以上是关于如何在 Xamarin 中打开默认浏览器?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改浏览器 怎么更改电脑默认浏览器

在哪里设置默认浏览器

MoSync:在默认网络浏览器中打开链接

如何在 Java Swing 应用程序的默认浏览器中打开 HTML 文件?

如何在Js脚本中,默认打开一个全屏的窗口,

微信中如何实现APP分享链接判断,实现在默认浏览器打开