2017-08-14 1 views
0

Voici comment je traite le lien profond dans mon activité. Je me demandais, comment puis-je le retirer de l'intention, après avoir fini de le traiter?Comment pouvons-nous supprimer les données de lien profond de l'intention?

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

Je veux éviter que les mêmes données, lorsque cette activité est en cours d'exécution onCreate à nouveau. Par exemple, lors des changements de configuration. Selon OP, nous pouvons utiliser la méthode suivante, pour supprimer les informations de liaison profonde de l'intention après le traitement fini. Cependant, cela entraînera un autre problème.

@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. Appuyez sur le lien profond dans le courrier électronique.
  2. Nous sommes en mesure de trouver le lien profond de l'intention.
  3. Appuyez sur le bouton d'accueil
  4. Appuyez sur le lien profond dans l'e-mail.
  5. Impossible de trouver le lien profond de l'intention plus.
+3

Avez-vous essayé setIntent (newIntent)? où newIntent est juste un "clone" de l'ancien juste avec setData (null). – vlatkozelka

Répondre

2

Comme @vlatkozelka mentionné, tout ce que vous devez faire est:

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

et vous êtes bon d'utiliser clonedIntent.