2017-02-13 54 views
0

我正在使用Rivets与Android打开我的应用程序并从网页获取数据。 我在我的onCreate方法中有以下内容。Android Rivets Applink数据总是为空

 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 
    })] 

我的测试内容为测试://测试的= 1234,它成功地打开我的活动。但是,Intent.HasExtra(“al_applink_data”)始终为false,Intent.GetStringExtra(“al_applink_data”)始终为空。 Intent.Data.ToString();用参数显示我的内容。我是C#中Rivets和Android编程的新手。为什么这总是假的和空的?

回答

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”)---->返回null。