2017-02-13 20 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。