Xamarin Forms WithParentActivityOrWindow не работает, если отсылать по ссылке - PullRequest
0 голосов
/ 02 февраля 2020

Я работаю с приложением Xamarin Forms, и все они подключены к MSAL.net. В Android, когда я запускаю приложение из ящика, все работает нормально, проверка подлинности завершена, и вызывается MainActivity.OnActivityResult (там у меня AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(a_RequestCode, a_ResultCode, a_Data)).

. Это приложение можно запустить также из AppLink, но когда я запускаю приложение таким образом, то после проверки подлинности MainActivity.OnActivityResult не вызывается, и отображается пустая форма, содержащая только название приложения.

Я используя в качестве параметра WithParentActivityOrWindow MainActivity. Есть идеи, почему не работает метод связи?

Спасибо

РЕДАКТИРОВАТЬ: Вот так выглядит моя MainActivity:

[Activity(Label = "MyApp", Icon = "@mipmap/icon", Theme = "@style/MainTheme", 
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.Portrait)]

[IntentFilter(new[] { Android.Content.Intent.ActionView },
AutoVerify = true, Categories = new[]
{
  Android.Content.Intent.CategoryDefault,
  Android.Content.Intent.CategoryBrowsable
},
  DataScheme = "https", DataPathPrefix = "/",
  DataHost = "MyApp.com"
)]

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
private App _App;

protected override void OnCreate(Bundle savedInstanceState)
{
  // TODO: If not shell remove this?
  TabLayoutResource = Resource.Layout.Tabbar;
  ToolbarResource = Resource.Layout.Toolbar;

  base.OnCreate(savedInstanceState);

  CrossCurrentActivity.Current.Init(this, savedInstanceState);

  global::Xamarin.Forms.Forms.SetFlags("Shell_Experimental", "Visual_Experimental", "CollectionView_Experimental", 
    "FastRenderers_Experimental");
  Xamarin.Essentials.Platform.Init(this, savedInstanceState);
  global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

  AnimationViewRenderer.Init();

  UserDialogs.Init(() => this);

  Rg.Plugins.Popup.Popup.Init(this, savedInstanceState);

  Plugin.InputKit.Platforms.Droid.Config.Init(this, savedInstanceState);

  FFImageLoading.Forms.Platform.CachedImageRenderer.Init(true);

  CarouselViewRenderer.Init();

  // Exception handler
  AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
  TaskScheduler.UnobservedTaskException += TaskSchedulerOnUnobservedTaskException;
  AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironmentOnUnhandledException;

  // Pass the activity to be used as OAuth return 
  _App = new App(this);
  LoadApplication(_App);
}

private void AndroidEnvironmentOnUnhandledException(object a_Sender, RaiseThrowableEventArgs a_Args)
{
  //a_Args.Handled = await _App.ShowUnhandledExceptionAsync(a_Sender, a_Args.Exception);
}

private void TaskSchedulerOnUnobservedTaskException(object a_Sender, UnobservedTaskExceptionEventArgs a_Args)
{
  _App.ShowUnhandledExceptionAsync(a_Sender, a_Args.Exception);
}

private void OnUnhandledException(object a_Sender, UnhandledExceptionEventArgs a_Exception)
{
  //_App.ShowUnhandledExceptionAsync(a_Sender, a_Exception.ExceptionObject as Exception);
}

public override void OnRequestPermissionsResult(int requestCode, string[] permissions,
  [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
  Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
  Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults); 
  base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

public override void OnBackPressed()
{
  if (Rg.Plugins.Popup.Services.PopupNavigation.Instance.PopupStack.Count > 0)
  {
    Rg.Plugins.Popup.Popup.SendBackPressed(base.OnBackPressed);
  }
  else
  {
    base.OnBackPressed();
  }
}

protected override void OnActivityResult(int a_RequestCode, Result a_ResultCode, [CanBeNull] Intent a_Data)
{
  base.OnActivityResult(a_RequestCode, a_ResultCode, a_Data);
  AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(a_RequestCode, a_ResultCode, a_Data);

  MultiMediaService.SharedInstance.OnActivityResult(a_RequestCode, a_ResultCode, a_Data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...