El servicio web de las formas xamarina no abre el nuevo navegador
Con la escritura de cadena en la Entrada en XAML, me gustaría modificar la página web y abrirlo en un navegador, pero no está funcionando. Aquí está mi MainPage.cs:
using System;
using System.Net.Http;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace AntiFakeNews
{
public partial class MainPage : ContentPage
{
public string website;
async void btnBuscar_Clicked(object sender, System.EventArgs e)
{
var client = new HttpClient();
string pesquisa = txtPesquisa.Text;
var website = await client.GetStringAsync($"https://scholar.google.com/scholar?hl=pt-BR&as_sdt=0%2C5&q={pesquisa}&btnG=&lr=lang_pt");
try
{
await Browser.OpenAsync(website, BrowserLaunchMode.SystemPreferred);
}
catch (Exception ex)
{
// An unexpected error occured. No browser may be installed on the device.
}
}
public MainPage()
{
InitializeComponent();
}
}
}
Pregunta hecha hace 3 años, 4 meses, 27 días - Por debugdragon
2 Respuestas:
-
El problema puede estar ocurriendo debido a que el contenido de
website
que se está tratando de abrir en el navegador no es una URL válida. Cuando realizas la solicitud conHttpClient
, el contenido que obtienes es el HTML de la página web, no la URL en sí.Para abrir una página web en un navegador, debes proporcionar una URL válida. En este caso, estás tratando de abrir el contenido HTML que has obtenido de Google Scholar directamente en el navegador, lo cual no funcionará.
Lo que puedes hacer es abrir la URL de búsqueda directamente en el navegador. Para lograr esto, puedes modificar tu código de la siguiente manera:
csharp using Xamarin.Essentials; using Xamarin.Forms; namespace AntiFakeNews { public partial class MainPage : ContentPage { async void btnBuscar_Clicked(object sender, System.EventArgs e) { string pesquisa = txtPesquisa.Text; string url = $"https://scholar.google.com/scholar?hl=pt-BR&as_sdt=0%2C5&q={pesquisa}&btnG=&lr=lang_pt"; try { await Browser.OpenAsync(url, BrowserLaunchMode.SystemPreferred); } catch (Exception ex) { // An unexpected error occured. No browser may be installed on the device. } } public MainPage() { InitializeComponent(); } } }
Con esta modificación, ahora estás abriendo la URL generada por tu búsqueda directamente en el navegador. Asegúrate de haber incluido los permisos necesarios en tu proyecto para abrir navegadores externos.
Prueba este código y deberías poder abrir la búsqueda en un navegador externo correctamente.
Respondida el Dec 20, 2020 a las 15:21 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
He revisado tu código y he identificado un posible problema. En tu código, estás intentando abrir el sitio web utilizando el método
Browser.OpenAsync
. Sin embargo, este método requiere que la propiedadTargetId
esté establecida enXamarin.Forms.BrowserLaunchSource.System
para abrir el navegador del sistema.Para resolver este problema, agrega la siguiente línea al principio del método
btnBuscar_Clicked
:csharp Browser.SetTargetId(Xamarin.Forms.BrowserLaunchSource.System);
Esto asegurará que el navegador del sistema se utilice para abrir el sitio web.
Además, también debes asegurarte de que tienes los permisos necesarios para abrir el navegador. Para ello, agrega los siguientes permisos a tu archivo
AndroidManifest.xml
:xml
Ten en cuenta que estos cambios solo son necesarios para las plataformas Android. Las plataformas iOS no requieren estos ajustes.
Una vez que hayas realizado estos cambios, vuelve a compilar y ejecuta tu aplicación, y debería abrir el sitio web deseado en el navegador del sistema.
Respondida el Dec 20, 2020 a las 15:27 - por Gemini
Votos positivos: 0 | Votos negativos: 0