2009-02-08 11 views
146

Ich möchte meine Absicht gestartet werden, wenn der Benutzer zu einer bestimmten URL geht: zum Beispiel, der Android Market tut dies mit http://market.android.com/ URLs. So auch Youtube. Ich möchte das auch tun.Android Reagieren auf URL in Intent

+8

Es gibt eine große Antwort auf diese Frage bei http://stackoverflow.com/questions/2448213/how-to-implement-my-very-own-uri-schema-on-android/2448531#2448531 – neu242

+2

Es gibt eine bessere Antwort auf diese Frage http://stackoverflow.com/questions/1609573/intercepting-links-from-the-browser-to-open-my-android-app – rds

Antwort

183

Ich habe es geschafft! Verwenden <intent-filter>. Setzen Sie Folgendes in Ihre Manifest-Datei:

<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:host="www.youtube.com" android:scheme="http" /> 
</intent-filter> 

Dies funktioniert perfekt!

+8

Es funktioniert nicht für mich. Kannst du bitte ein Beispiel angeben - Link, der die Anwendung öffnen würde. –

+7

Ich würde gerne auf "www.youtube.com" reagieren, aber NICHT auf "www.youtube.com/fr /" ... Irgendeine Idee, wie ich das machen kann? – Gilbou

+0

Das funktioniert perfekt, danke, aber ich brauche auch die URL, die geklickt wurde, um die App zu öffnen. kann jemand erklären, wie man das macht? – boogieman

7

Möglicherweise müssen Sie Ihrem Intent-Filter verschiedene Permutationen hinzufügen, damit er in verschiedenen Fällen funktioniert (http/https/ect).

Zum Beispiel hatte ich die folgenden für eine App zu tun, die sich öffnen würde, wenn der Benutzer auf einen Link zum Google Antriebsformen geöffnet, www.docs.google.com/forms

Beachten Sie, dass Pfadpräfix optional.

 <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" 
       android:host="docs.google.com" 
       android:pathPrefix="/forms"/> 
      <data 
       android:scheme="http" 
       android:host="www.docs.google.com" 
       android:pathPrefix="/forms" /> 

      <data 
       android:scheme="https" 
       android:host="www.docs.google.com" 
       android:pathPrefix="/forms" /> 

      <data 
       android:scheme="https" 
       android:host="docs.google.com" 
       android:pathPrefix="/forms" /> 
     </intent-filter>