Czy można utworzyć link, taki jak:
<a href="anton://useful_info_for_anton_app">click me!</a>
spowodować uruchomienie mojej aplikacji Anton?
Wiem, że działa to dla aplikacji Android Market z protokołem rynku, ale czy można zrobić coś podobnego z innymi aplikacjami?
Oto przykład linku, który uruchomi Android Market:
<a href="market://search?q=pname:com.nytimes.android">click me!</a>
Aktualizacja:
Odpowiedź, którą zaakceptowałem, udzielona przez eldarerathis, działa świetnie, ale chcę tylko wspomnieć, że miałem pewne problemy z kolejnością podelementów <intent-filter>
tagu. Sugeruję, aby po prostu zrobić kolejny <intent-filter>
z nowymi podelementami w tym tagu, aby uniknąć problemów, które miałem. Na przykład mój AndroidManifest.xml
wygląda następująco:
<activity android:name=".AntonWorld"
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>
<data android:scheme="anton" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Odpowiedzi:
Myślę, że będziesz chciał przyjrzeć się
<intent-filter>
elementowi twojego pliku Mainfest. W szczególności zapoznaj się z dokumentacją<data>
podelementu.Zasadniczo musisz zdefiniować własny schemat. Coś w stylu:
Następnie powinieneś być w stanie uruchomić aplikację z linkami rozpoczynającymi się od
anton:
schematu URI.źródło
NIE używaj własnego schematu niestandardowego w ten sposób !!! Schematy URI to globalna przestrzeń nazw sieci . Czy posiadasz program „anton:” na całym świecie? Nie? Więc NIE używaj go.
Jedną z opcji jest posiadanie strony internetowej i filtr zamiarów dla konkretnego identyfikatora URI na tej stronie. Na przykład to, co robi Market, aby przechwycić identyfikatory URI na swojej stronie internetowej:
Alternatywnie istnieje schemat „intent:”. Dzięki temu możesz opisać prawie każdy zamiar jako identyfikator URI, który przeglądarka spróbuje uruchomić po kliknięciu. Aby zbudować taki schemat, najlepszym sposobem jest po prostu napisanie kodu w celu skonstruowania zamierzonej intencji, a następnie wydrukowanie wyniku intent.toUri (Intent.URI_INTENT_SCHEME).
Możesz użyć akcji w tym celu, aby znaleźć dowolne działanie wspierające tę akcję. Przeglądarka automatycznie doda kategorię BROWSABLE do intencji przed jej uruchomieniem, ze względów bezpieczeństwa; spowoduje to również usunięcie każdego wyraźnego elementu dostarczonego z tego samego powodu.
Najlepszym sposobem na użycie tego, jeśli chcesz mieć pewność, że uruchamia się tylko twoja aplikacja, jest własna akcja o zasięgu i użycie Intent.setPackage (), aby powiedzieć, że zamiar będzie pasował tylko do pakietu aplikacji.
Kompromisy między nimi:
URI http wymagają posiadania własnej domeny. Użytkownik zawsze będzie miał opcję pokazania identyfikatora URI w przeglądarce. Ma bardzo ładne właściwości rezerwowe, w przypadku których jeśli aplikacja nie zostanie zainstalowana, po prostu wylądują na Twojej stronie internetowej.
zamierzone identyfikatory URI wymagają, aby Twoja aplikacja była już zainstalowana i tylko na telefonach z Androidem. Zezwalaj na prawie dowolne zamiary (ale zawsze zawiera kategorię BROWSABLE i nie obsługuje jawnych komponentów). Pozwalają one skierować uruchomienie tylko na Twoją aplikację, bez konieczności przechodzenia do przeglądarki lub innej aplikacji.
źródło
market://
linki :)Przepraszam za promowanie siebie, ale mam wtyczkę jQuery do uruchamiania aplikacji natywnych z łączy internetowych https://github.com/eusonlito/jquery.applink
Możesz użyć tego łatwo:
źródło
Zetknąłem się z tym problemem i zobaczyłem wiele absurdalnych stron. Nauczyłem się, że aby twoja aplikacja była dostępna do przeglądania, zmień kolejność elementów XML, to:
To działało dla mnie i może ci pomóc.
źródło
Oto mój przepis:
Utwórz statyczny kod HTML, który przekierowuje na żądany adres URL aplikacji, umieść tę stronę w Internecie.
W ten sposób udostępnione linki są „prawdziwymi” linkami, jeśli chodzi o Androida (będą „klikalne”).
„Udostępniasz” zwykły link HTTP, www.twoj.server.com/foo/bar.html Ten adres URL zwraca prosty 8-wierszowy kod HTML, który przekierowuje do identyfikatora URI aplikacji (window.location = "blah: // kuku") ( zauważ, że „bla” nie musi już być HTTP ani HTTPS).
Gdy już to uruchomisz, możesz rozszerzyć HTML o wszystkie fantazyjne możliwości, jak sugerowano powyżej.
Działa to z wbudowaną przeglądarką, Opera i Firefox (nie testowałem żadnej innej przeglądarki). Firefox pyta „Ten link musi zostać otwarty w aplikacji” (ok, anuluj). Inne przeglądarki najwyraźniej nie martwią się o bezpieczeństwo, po prostu otwierają aplikację, bez zadawania pytań.
źródło
<a href="iamnearby://register_activate">Activate</a>
Po skonfigurowaniu aplikacji i niestandardowego schematu URL aplikacji kod javascript u góry strony odbierającej działa dla mnie zarówno na iOS, jak i na Androidzie:
Zostało to przetestowane tylko w przeglądarce Androida. Nie jestem pewien co do Firefoksa lub Opery. Kluczem jest to, że chociaż przeglądarka Androida nie wrzuci dla ciebie miłego wyjątku
window.open(custom_url, '_blank')
, zawiedzie i wróci,null
który możesz przetestować później.Aktualizacja: za pomocą
store_loc = "https://play.google.com/store/apps/details?id=com.raditaz";
łącza do Google Play na Androida.źródło
Możesz rozważyć bibliotekę obsługującą precyzyjny link do Twojej aplikacji:
https://github.com/airbnb/DeepLinkDispatch
Możesz dodać filtr zamiaru do działania z adnotacjami, tak jak sugerują to osoby powyżej. Będzie obsługiwał routing i parsowanie parametrów dla wszystkich twoich głębokich linków. Na przykład twoja główna aktywność może mieć coś takiego:
Może również obsługiwać parametry zapytania.
źródło
Wypróbuj moją prostą sztuczkę:
i mój link HTML:
czy można zrobić <a href = „classRegister: prawdziwe ”> <- „prawdziwa” wartość dla klasy pliku
jednak ten skrypt działa dla linku mailto :)
źródło
JavascriptInterface
obejścia z obejściem, jest to właściwe obejście, jeśli potrzebujesz obsługi 2.3, gdzie JavaScriptInterface jest uszkodzony.Ta metoda nie wywołuje okna ujednoznacznienia z prośbą o otwarcie aplikacji lub przeglądarki.
Jeśli zarejestrujesz następujące elementy w swoim Manifeście
i na przykład kliknij ten adres URL w wiadomości e-mail w telefonie
wtedy Android spróbuje znaleźć aplikację z pakietem com.myApp, która odpowiada intencjom galerii i ma schemat myApp . W przeciwnym razie zabierze Cię do sklepu w poszukiwaniu com.myApp , która powinna być Twoją aplikacją.
źródło