2013-09-27 17 views
7

Obecnie w mojej aplikacji mam własny schemat identyfikatora URI, który wykrywa, kiedy użytkownik klika określony identyfikator URI.Odbieranie danych dla niestandardowego schematu URL w Androidzie

Kod stosowany w Manifest pliku jest jak poniżej:

<intent-filter> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="http" android:host="com.test/> 
      <action android:name="android.intent.action.VIEW" /> 
    </intent-filter> 

Jeśli użytkownik kliknie na link, który ma mój zwyczaj URI w przeglądarce, będzie teraz podręczne opcji dla użytkownika, aby wybrać moją aplikację.

Ale w jaki sposób przekazać te dane, które są linkiem do mojej aplikacji, gdy zostaną rozpoczęte w celu dalszego przetwarzania? Zasadniczo jak przekazać dane z przeglądarki do mojej aplikacji?

Dzięki z góry

+0

Dlaczego dwa razy ustawiasz android.intent.action.VIEW? – portfoliobuilder

+0

@portfoliobuilder Powinien być raz, zgadnij, że nie popełnił żadnego błędu, jeśli został napisany dwa razy, więc przegapiłbym go. – aandroidtest

Odpowiedz

9

Załóżmy url kliknięciu jest http://twitter.com/status/1234 można uzyskać dane za pomocą następującej metody.

// http://twitter.com/status/1234 
    Uri data = getIntent().getData(); 
    Log.d(TAG, data.toString()); 
    String scheme = data.getScheme(); // "http" 
    Log.d(TAG, scheme); 
    String host = data.getHost(); // "twitter.com" 
    Log.d(TAG, host); 
    String inurl = data.toString(); 
    List<String> params = data.getPathSegments(); 
    String first = params.get(0); // "status" 
    String second = params.get(1); // "1234" 
+0

Dzięki! Działa idealnie. – aandroidtest

+0

Cieszę się, że pomogło! –

+0

Zawsze uzyskuję wartość null w ścieżkach :(Jednak dane są poprawne i nie są puste. – djdance

Powiązane problemy