Предположим, что URL, по которому вы щелкаете, - http://myappname?destination=a
, вы можете получить данные в действии через:
if (Intent.Data != null)
{
var host = Intent.Data.EncodedAuthority;
var parameter = Intent.Data.GetQueryParameter("destination");
}
Поскольку вы используете Xamarin.Forms, вам нужно перейти на указанную страницу в Forms. MessagingCenter - хороший выбор.
Во-первых, зарегистрируйте его в проекте App on Forms:
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new MainPage());
MessagingCenter.Subscribe<object, object>(this, "Navigate", (sender, args) =>
{
if ((string)args == "a")
{
MainPage = new SecondPage();
// or (MainPage as NavigationPage).PushAsync(new SecondPage());
}
});
}
Запустите этот центр сообщений, когда получите данные:
if (host == "myappname")
{
MessagingCenter.Send<object, object>(this, "Navigate", parameter);
}
Обновление
Если вы не хотите использовать MessagingCenter.Определите публичный метод в приложении, например:
public void MoveToPage(string pageName)
{
if (pageName == "a")
{
MainPage = new SecondPage();
// or (MainPage as NavigationPage).PushAsync(new SecondPage());
}
}
Затем вызовите его, когда Intent.Data != null
в MainActivity:
var formsApp = new App();
LoadApplication(formsApp);
if (Intent.Data != null)
{
var host = Intent.Data.EncodedAuthority;
var parameter = Intent.Data.GetQueryParameter("destination");
formsApp.MovePage(parameter);
}