Android заклепывает данные Applink всегда пустыми

Я использую заклепки с Android, чтобы открыть свое приложение и получить данные с веб-страницы. У меня есть следующее в моем методе onCreate.

        if (Intent.HasExtra("al_applink_data"))
        {
            var data = Intent.Data.ToString();
            var appLinkData = Intent.GetStringExtra("al_applink_data");

            var alUrl = new Rivets.AppLinkUrl(data, appLinkData);

            // InputQueryParameters will contain our token
            if (alUrl != null && alUrl.InputQueryParameters.ContainsKey("an"))
            {
                _token = alUrl.InputQueryParameters["an"];
            }
            else
            {
               // No token found
            }
        }

У моей активности этот фильтр вверху.

[IntentFilter(new[] { Intent.ActionView }, 
    DataScheme = "test", 
    DataHost = "test", 
    Categories = new[]
    {
        Intent.CategoryDefault, Intent.CategoryBrowsable
    })]

Мой тестовый контент - test://test? An=1234, который успешно открывает мою активность. Однако Intent.HasExtra("al_applink_data") всегда ложно, а Intent.GetStringExtra("al_applink_data") всегда равно нулю. Intent.Data.ToString(); показывает мой контент с параметром. Я новичок в Rivets и Android программирования на C#. Почему это всегда может быть ложным и нулевым?

1 ответ

Попробуйте вот так:

protected override void OnCreate(Bundle bundle)
{
  base.OnCreate(bundle);
  SetContentView(....);
  if (Intent != null) 
  {
   OnNewIntent(Intent);
  }
}

protected override void OnNewIntent(Android.Content.Intent intent)
{
  base.OnNewIntent(intent);
  var appLinkData  = intent.GetStringExtra("al_applink_data");
  AppLinkUrl alUrl = null;
  if (appLinkData != null)
  {
    alUrl = new Rivets.AppLinkUrl(intent.Data.ToString(), appLinkData);
  }
  if (alUrl != null) {
   // LAUNCH URI
  }
}

Не забудьте использовать (в нижнем регистре) параметр "намерение", передаваемый в методе OnNewIntent:

intent.GetStringExtra ("al_applink_data") ----> содержит данные Intent.GetStringExtra("al_applink_data") ----> return null.

Другие вопросы по тегам