Android Rivets Applink数据始终为空

时间:2017-02-13 17:50:53

标签: c# android android-intent applinks rivets

我正在使用铆钉与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")始终为false,而Intent.GetStringExtra(" al_applink_data")始终为null。 Intent.Data.ToString();用参数显示我的内容。我是C#中Rivets和Android编程的新手。为什么这总是假的而且是空的?

1 个答案:

答案 0 :(得分:0)

试试这样:

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。