Frage

Ich möchte in der Lage sein, meine App zum Öffnen eines Links fordern zu können, wenn der Benutzer auf eine URL eines bestimmten Musters klickt, anstatt dem Browser ihn zu öffnen. Dies kann sein, wenn sich der Benutzer auf einer Webseite im Browser oder in einem E-Mail-Client oder in einer Webview in einer frischminenzierten App befindet.

Klicken Sie beispielsweise von überall im Telefon auf einen YouTube -Link von überall vom Telefon und Sie erhalten die Möglichkeit, die YouTube -App zu öffnen.

Wie erreiche ich das für meine eigene App?

War es hilfreich?

Lösung

Verwenden Sie eine Android.intent.Action.View der Kategorie Android.intent.Category.Browsable.

Von Romain Guy's Foto-Stream Apps AndroidManifest.xml,

    <activity
        android:name=".PhotostreamActivity"
        android:label="@string/application_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"
                  android:host="flickr.com"
                  android:pathPrefix="/photos/" />
            <data android:scheme="http"
                  android:host="www.flickr.com"
                  android:pathPrefix="/photos/" />
        </intent-filter>
    </activity>

Sobald du drinnen bist Aktivität, Sie müssen nach der Aktion suchen und dann etwas mit der URL tun, die Ihnen übergeben wurde. Das Intent.getData() Die Methode gibt Ihnen einen URI.

    final Intent intent = getIntent();
    final String action = intent.getAction();

    if (Intent.ACTION_VIEW.equals(action)) {
        final List<String> segments = intent.getData().getPathSegments();
        if (segments.size() > 1) {
            mUsername = segments.get(1);
        }
    }

Es ist jedoch zu beachten, dass diese App ein wenig veraltet ist (1.2), sodass Sie möglicherweise bessere Möglichkeiten gibt, dies zu erreichen.

Andere Tipps

Es gibt einige Bibliotheken, die Parameter von URL automatisch analysieren.

wie zum Beispiel

https://github.com/airbnb/deeplinkdispatch

&&

https://github.com/mzule/activityrouter

Der spätere wird von mir geschrieben. Dies kann Parameter an einen bestimmten Typ analysieren, nicht immer Zeichenfolge.

Beispiel

@Router(value = "main/:id" intExtra = "id")
...
int id = getIntent().getInt("id", 0);
private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        setUrlparams(url);

        if (url.indexOf("pattern") != -1) {
            // do something
            return false;
        } else {
            view.loadUrl(url);
        }

        return true;
    }

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top