Android:收到后如何删除对firebase动态链接的引用?

Kes*_*ker 5 java android firebase firebase-dynamic-links

在我的应用程序中,我在主要活动中收到动态链接。当用户打开链接并启动应用程序并完成正确的操作时,这非常有效,但在应用程序中检索到动态链接后,它似乎仍然存在。

即使在用户按下链接并在应用程序中使用 检索它之后,用户也FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())可以关闭应用程序并在一段时间后重新打开它,getDynamicLink(getIntent())并且仍然会返回链接和意图中的数据。

一旦在应用程序中检索到链接及其数据,有没有办法丢弃该链接及其数据?我只需要做setIntent(null)吗?

这是我的 MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.ButtonTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    handleDynamicLink();
}

private void handleDynamicLink() {
    FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, pendingDynamicLinkData -> {
                // Get deep link from result (may be null if no link is found)
                Uri deepLink = null;
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.getLink();
                    if(deepLink!=null){
                        String gameId = deepLink.getQueryParameter("id");
                        Intent intent = new Intent(this, MultiplayerActivity.class);
                        intent.putExtra("gameId",gameId);
                        startMultiplayerActivity(intent);
                    }
                    Log.d(TAG, "handleDynamicLink: bundle: "+deepLink.getQueryParameter("id"));
                }
            }).addOnFailureListener(this, e -> Log.w(TAG, "getDynamicLink:onFailure", e));
}
Run Code Online (Sandbox Code Playgroud)

小智 3

从动态Link中获取数据后,您可以根据需要将数据发送到Activity。然后处理这个问题。

处理完Data后,如果想丢弃Data,请在Activity中使用此代码。

getActivity().getIntent().setData(null);
Run Code Online (Sandbox Code Playgroud)