2017-08-14 58 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