2017-08-14 59 views
0

這是我在我的活動中處理深層鏈接的方式。我們如何從意圖中刪除深層鏈接數據

我想知道,在完成處理之後,如何從意圖中刪除它?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    Utils.updateTheme(this); 

    super.onCreate(savedInstanceState); 

    Uri uri = this.getIntent().getData(); 
    if (uri != null && uri.isHierarchical()) { 
     if (Constants.INVESTING_DEEP_LINK_PATH.equals(uri.getPath())) { 
      // Processing deep link... 

      // How can I remove deep link information from intent, after 
      // finished procesing deep link... 
     } 
    } 
} 

我想要防止再次執行此活動onCreate時的相同數據。例如,在配置更改期間。


根據有機磷農藥,我們可以使用下面的方法,處理完畢後,除去從意圖深層鏈接信息。但是,它會產生另一個問題。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    Utils.updateTheme(this); 

    super.onCreate(savedInstanceState); 

    Uri uri = intent.getData(); 
    if (uri != null && uri.isHierarchical()) { 
     if (Constants.INVESTING_DEEP_LINK_PATH.equals(uri.getPath())) { 
      // Processing deep link... 

      intent.setData(null); 
      setIntent(intent); 
     } 
    } 
} 
  1. 按下電子郵件中的深層鏈接。
  2. 我們能夠從意向中找到深層鏈接。
  3. 按主頁按鈕
  4. 按下電子郵件中的深層鏈接。
  5. 無法再從意向中找到深層鏈接。
+3

你試過setIntent(newIntent)嗎? newIntent只是setData(null)的舊版本的「克隆」。 – vlatkozelka

回答

2

正如@vlatkozelka提到的,所有你需要做的是:

Intent clonedIntent = getIntent(); 
clonedIntent.setData(null); 

,你是好使用clonedIntent