2010-06-14 12 views
5

Ich habe über Intents in Android gelesen, aber hier geht meine Frage. Ich möchte eine App auf meinem Android-Handy mit einem Klick auf einen Link im Webbrowser starten. Beispiel: Wenn der Link "mycam: // http://camcorder.com" lautet, fungiert "mycam: //" als eine Art "Tag" zum Starten meiner App, aber ich möchte "http://camcorder.com" als Zeichenfolge an diese App weiterleiten Anfang.Launch App mit URL

Hilfe bitte!

Danke!

Antwort

5

es ein Verfahren, in dem Browser App Quellcode ist,:

public boolean shouldOverrideUrlLoading(WebView view, String url) { ... } 

Nach einer URL geklickt und es noch nicht beginnt zu laden:

  1. die URL Absicht wandelt

  2. Wenn es nicht mit market: // (oder einigen vordefinierten Schemata) startet, versuchen Sie startActivityIfNeeded()

    intent.addCategory(Intent.CATEGORY_BROWSABLE); 
    intent.setComponent(null); 
    try { 
        if (startActivityIfNeeded(intent, -1)) { 
         return true; 
        } 
    } catch (ActivityNotFoundException ex) { 
        // ignore the error. If no application can handle the URL, 
        // eg about:blank, assume the browser can handle it. 
    } 
    

Es ist sehr nützliche Informationen! Ich wieder spielen, um die Situation in einem einfachen Code:

Intent intent = Intent.parseUri("mycam://http://camcorder.com", Intent.URI_INTENT_SCHEME); 
intent.addCategory(Intent.CATEGORY_BROWSABLE); 
intent.setComponent(null); 
System.out.println(intent); 

Das Ergebnis Anhaltspunkte liefert für mich eine Tätigkeit mit der Absicht-Filter zu schreiben:

 <activity android:name=".MyCamActivity" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <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="mycam" /> 
      </intent-filter> 
     </activity> 

PS. Vergessen Sie nicht die android.intent.category.DEFAUL.

Schließlich können Sie Ihre Aktivität von MyCam aufrufen: // Schema

+0

Also alles, was ich tun muss, ist meine Absicht-Filter zu erstellen? BTW, hier ist der Link, mit dem ich die Tests machen werde: http://gunitec.com.do/carlos-portes.html "Cam1" ist der eigentliche Link, mit dem ich testen werde. Ich habe den Intent-Filter ausprobiert und nichts bekommen. –

+0

Ich teste es gut. könnten Sie die AndroidManifest.xml bereitstellen? – qrtt1

+0

Ok, wie kann ich es dir schicken? Sorry für die späte Antwort, ich wurde nicht benachrichtigt, dass du zurückgeschrieben hast. –

4

MyCam: // http://camcorder.com ist kein gültiger URI und Systeme bilden ist etwas beängstigend, wenn zwei Anwendungen die gleiche Auswahl. Es wäre besser für Sie, Ihre Aktivität als Handler für einen bestimmten URI zu registrieren (zum Beispiel http://www.beispiel.com/camcorder http://www.beispiel.de/camcorder http://www.beispiel.com/camcorder) und natürlich Ihre eigene Domain ersetzen). Sie tun das mit der <data> tag in your <intent-filter> tag in the AndroidManifest.xml. Wenn der Nutzer auf den Link klickt, wird er zu Ihrer Anwendung weitergeleitet. Auf diese Weise können Sie auch eine echte Seite ins Internet stellen, die die Leute anweist, Ihre App oder was auch immer zu installieren.

+0

Die Anwendung, an der ich arbeite, wurde für bestimmte interne Links auf einer Website erstellt, nicht für alle Links. Warum sagst du, es ist kein gültiger URI? –

Verwandte Themen