2017-01-07 1 views
0

Je vais mettre en œuvre ce scénario:Comment faire un les liens de mon site dans le navigateur Android démarre mon application, mais pas quand le lien a une certaine partie

www. example.com -> Démarrer mon App

http: // example.com -> Démarrer mon App

http: // www.example.com -> Démarrer mon App

https: // example.com -> Démarrer mon App

https: // www.example.com -> Démarrer mon App

Mais ...

http: // example.com/dont/start/app -> Ouvrir le lien dans le navigateur par défaut. En utilisant le filtre d'intention toutes les fois qu'il ouvrira mon application.

<activity 
     android:name=".MainActivity" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 

      <data android:scheme="http" /> 
      <data android:scheme="https" /> 
      <data android:host="example.com" /> 
     </intent-filter> 
    </activity> 
+0

Pouvez-vous afficher le code java? –

+0

@PranjalCholadhara Le code a été ajouté. –

Répondre

1

Une façon de le faire serait d'ouvrir le navigateur directement dans ce cas. Comme cette

onCreate() { 
    if(uri is in path we don't want) { 
    open browser directly via intent 
    finish(); 
    return; 
    } 
    //Handle a URL we do want 
} 

Pour ouvrir le navigateur directement, vous pouvez comprendre ce que le navigateur par défaut est via How to find default browser set on android device et lancez explicitement.

+0

Cela ne fonctionne pas. c'est l'erreur: java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'boolean android.content.Intent.migrateExtraStreamToClipData()' sur une référence d'objet nul –

+0

Bogue connu. Cela se produit lorsque vous tentez d'utiliser quelque chose qui nécessite GooglePlayServices sur un périphérique sans qu'il soit installé. Ce que vous faites le requiert, je n'en ai aucune idée, puisque rien de ce qui est discuté dans cette question n'en a besoin. –