Otwórz aplikację na Androida za pomocą adresu URL, nie działa filtr intencyjny

Mam aplikację na Androida, której ludzie używają jako zamiennika strony internetowej. Dlatego, gdy użytkownicy napotkają adres URL do witryny, chcę dać im opcję „otwarcia adresu URL” w mojej aplikacji zamiast w przeglądarce. Innymi słowy chcę, aby pojawiło się okienko, które pozwoli im wybrać pomiędzy moją aplikacją a przeglądarką (i ewentualnie innymi aplikacjami).

Z różnych źródeł rozumiem, że muszę dodać zamierzony filtr do działania w mojej aplikacji za pomocą filtru „dane”, który filtruje adresy URL właściwych formularzy.

Ta strona jesthttp://members.iracing.com, dlatego dodałem następujący filtr intencji:

    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <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" />
            <data android:scheme="http" />
            <data android:host="members.iracing.com" />
        </intent-filter>
    </activity>

Wypróbowałem różne formy tych filtrów danych, na przykład użycie pojedynczego węzła „dane” z obydwoma atrybutami:

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

Po prostu nie działa. Nie wiem, co jeszcze mogę ci powiedzieć. Na mojej stronie internetowej umieściłem prostą stronę HTML z kilkoma linkami do różnych stron na tej stronie (wszystko zaczynające się od „http: //members.iracing.com / ...”), a kiedy klikam na któryś z nich, po prostu otwierają się w przeglądarce bez pytania mnie, której aplikacji chcę użyć. Próbowałem go zarówno na emulatorze, jak i po zainstalowaniu aplikacji na moim fizycznym urządzeniu, nic nie działa. Wypróbowałem to w całkowicie PUSTYM, nowym projekcie na Androida, żeby sprawdzić, czy to zadziała, nic.

Wtedy zdałem sobie sprawę, że strona wymaga uwierzytelnienia, a jeśli nie jesteś zalogowany, przekierowuje na stronę logowania pod adresemhttps://members.iracing.com/membersite/login.jsp, dlatego próbowałem zastąpić schemat „https”. Próbowałem nawet zmienić hosta na „www.members.iracing.com”, a na koniec próbowałem nawet kombinacji tych wszystkich rzeczy (nie jestem pewien, czy to powinno zadziałać, ale w tym momencie jestem zdesperowany… ...)

       <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http" />
            <data android:scheme="https" />
            <data android:host="members.iracing.com" />
            <data android:host="www.members.iracing.com" />
        </intent-filter>

Wciąż nie idę. Nie jestem pewien, czy przekierowanie jest istotne, ale przeglądarka najpierw przechodzi do strony nie przekierowanej, a następnie przekierowuje do strony logowania, ale w żadnym momencie nie mam wyboru, aby otworzyć ją w mojej aplikacji. Ponadto, jeśli najpierw zaloguję się ręcznie w przeglądarce, nie ma przekierowania i nadal nie działa.

Czy brakuje mi tutaj czegoś oczywistego? Wyciągam włosy z głowy, dlaczego to nie działa, i nie mogę debugować tego poza próbowaniem wszystkich możliwych kombinacji, o których mogłem pomyśleć (zrobiłem ...). Dzięki za pomoc!

questionAnswers(3)

yourAnswerToTheQuestion