【问题标题】:How can we remove deep link data from intent我们如何从意图中删除深层链接数据
【发布时间】:2017-08-14 14:17:41
【问题描述】:

这就是我在我的 Activity 中处理深层链接的方式。

我想知道,在我完成处理后如何将其从意图中删除?

@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 时,我想阻止相同的数据。例如,在配置更改期间。


根据 OP,我们可以使用以下方式,在完成处理后从 Intent 中删除深层链接信息。但是,它会产生另一个问题。

@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. 无法再从 Intent 中找到深层链接。

【问题讨论】:

  • 你试过 setIntent(newIntent) 了吗?其中 newIntent 只是带有 setData(null) 的旧 Intent 的“克隆”。

标签: android deep-linking


【解决方案1】:

正如@vlatkozelka 所说,您需要做的就是:

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

你很高兴使用clonedIntent

【讨论】:

  • 您的目标是哪个 API?
  • 我在我的react-native 项目中使用它来清除深层链接意图。我已经导入了这样的 Intent import android.content.Intent;。但我在这条线上遇到了错误Intent clonedIntent = getIntent();。错误:找不到符号 getIntent
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 2023-01-04
相关资源
最近更新 更多