2017-08-14 2 views
0

So verarbeite ich Deep-Link in meiner Aktivität.Wie können wir Deep-Link-Daten aus der Absicht entfernen

Ich fragte mich, wie kann ich es aus Absicht entfernen, nachdem ich es fertig bearbeitet hatte?

@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... 
     } 
    } 
} 

Ich möchte die gleichen Daten verhindern, wenn diese Aktivität onCreate erneut ausgeführt werden. Zum Beispiel während Konfigurationsänderungen.

Gemäß OPs können wir den folgenden Weg verwenden, um Deep-Link-Informationen aus der Absicht nach der Verarbeitung zu entfernen. Es wird jedoch ein anderes Problem ergeben.

@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. Drücken Sie auf der Deep-Link in E-Mail.
  2. Wir sind in der Lage, die tiefe Verbindung von Absicht zu finden.
  3. Drücken Sie die Home-Taste
  4. Drücken Sie auf den Deep-Link in E-Mail.
  5. Der Deep-Link von Intent kann nicht mehr gefunden werden.
+3

Haben Sie setIntent (newIntent) versucht? wo der newIntent nur ein "Klon" des alten ist, nur mit setData (null). – vlatkozelka

Antwort

2

Wie @vlatkozelka erwähnt, alles, was Sie tun müssen, ist:

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

und Sie sind gut clonedIntent zu verwenden.

Verwandte Themen