Czy ktoś może poprowadzić mnie, jak uruchomić moją aplikację na Androida z przeglądarki na Androida?
źródło
Czy ktoś może poprowadzić mnie, jak uruchomić moją aplikację na Androida z przeglądarki na Androida?
Użyj <intent-filter>
z <data>
elementem. Na przykład, aby obsłużyć wszystkie linki do twitter.com, umieściłbyś to <activity>
w swoim AndroidManifest.xml
:
<intent-filter>
<data android:scheme="http" android:host="twitter.com"/>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
Następnie, gdy użytkownik kliknie link do Twittera w przeglądarce, zostanie zapytany, jakiej aplikacji użyć, aby zakończyć akcję: przeglądarki lub aplikacji.
Oczywiście, jeśli chcesz zapewnić ścisłą integrację między witryną a aplikacją, możesz zdefiniować własny schemat:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
Następnie w aplikacji internetowej możesz umieścić linki takie jak:
<a href="my.special.scheme://other/parameters/here">
A kiedy użytkownik ją kliknie, aplikacja zostanie uruchomiona automatycznie (ponieważ prawdopodobnie będzie to jedyna, która może obsłużyć my.special.scheme://
typ uris). Jedynym minusem jest to, że jeśli użytkownik nie ma zainstalowanej aplikacji, otrzyma nieprzyjemny błąd. Nie jestem pewien, czy można to sprawdzić.
Edycja: Aby odpowiedzieć na twoje pytanie, możesz użyć, getIntent().getData()
który zwraca Uri
obiekt. Następnie możesz użyć Uri.*
metod do wyodrębnienia potrzebnych danych. Załóżmy na przykład, że użytkownik kliknął link do http://twitter.com/status/1234
:
Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"
Możesz zrobić powyższe w dowolnym miejscu Activity
, ale prawdopodobnie będziesz chciał to zrobić onCreate()
. Możesz także użyć, params.size()
aby uzyskać liczbę segmentów ścieżki w Uri
. Zajrzyj na stronę javadoc lub witrynę programisty Androida, aby uzyskać inne Uri
metody wyodrębnienia określonych części.
android:exported="true"
do swojegoActivity
manifestu. Sprawdź tę odpowiedź stackoverflow.com/a/13044911/1276636Wszystkie powyższe odpowiedzi nie działały dla mnie
CHROME
na dzień 28 stycznia 2014 rmoja aplikacja została uruchomiona poprawnie z http://example.com/someresource/ linków z aplikacji takich jak hangouty, Gmail itp., ale nie z przeglądarki Chrome.
aby rozwiązać ten problem, aby poprawnie uruchamiał się z CHROME, musisz ustawić taki filtr intencji
zanotuj
pathPrefix
elementTwoja aplikacja będzie teraz pojawiać się w narzędziu wyboru aktywności za każdym razem, gdy użytkownik zażąda http://example.com/someresource/ wzorca z przeglądarki Chrome, klikając link w wynikach wyszukiwania Google lub w dowolnej innej witrynie
źródło
Proszę zobaczyć mój komentarz tutaj: zrobić link w przeglądarce Androida, aby uruchomić moją aplikację?
Zdecydowanie odradzamy ludziom korzystanie z ich własnych programów, chyba że definiują oni nowy program na całym świecie.
źródło
W moim przypadku musiałem ustawić dwie kategorie dla
<intent-filter>
i wtedy zadziałało:źródło
Na przykład masz następujące rzeczy:
Następnie musisz wykonać następujące czynności:
1) Dodaj filtr zamiarów do swojej aktywności (może to być dowolna aktywność. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją ).
2) Utwórz plik HTML, aby przetestować łącze lub użyj tych metod.
3) Użyj Mobile Chrome do przetestowania
4) To wszystko.
I nie jest konieczne publikowanie aplikacji na rynku w celu przetestowania precyzyjnego linkowania =)
Aby uzyskać więcej informacji, sprawdź dokumentację i przydatną prezentację .
źródło
Należy również
<category android:name="android.intent.category.BROWSABLE"/>
dodać do filtru zamiarów, aby aktywność została poprawnie rozpoznana z linku.źródło
Poniższy link zawiera informacje na temat uruchamiania aplikacji (jeśli jest zainstalowana) bezpośrednio z przeglądarki. W przeciwnym razie bezpośrednio otwiera aplikację w sklepie Play, dzięki czemu użytkownik może bezproblemowo pobrać.
https://developer.chrome.com/multidevice/android/intents
źródło
Pamiętaj, że jeśli Twoja ikona zniknie z programu uruchamiającego Androida po wdrożeniu tej funkcji, musisz podzielić filtr celowy.
źródło
Tak, Chrome wyszukuje zamiast szukać schematu. Jeśli chcesz uruchomić aplikację za pomocą schematu URI, skorzystaj z tej fajnej aplikacji narzędziowej w sklepie Play. Uratowało mi to dzień :) https://play.google.com/store/apps/details?id=com.naosim.urlschemesender
źródło
Xamarin port Felix „s odpowiedź
W swoim
MainActivity
dodaj to ( docs: Android.App.IntentFilterAttribute Class ):Xamarin doda
AndroidManifest.xml
dla Ciebie następujące elementy:Aby uzyskać parametry ( testowałem w OnCreate of MainActivity ):
O ile mi wiadomo, powyższe można dodać w dowolnej aktywności, nie tylko MainActivity
Uwagi:
OnCreate
zdarzenie aplikacjiMainLauncher Activity
zostanie ponownie uruchomione .<a href="my.special.scheme://host/arg1/arg2">
w powyższym ostatnim kodzie wartości fragmentu będą następujące:Aktualizacja: jeśli Android utworzy nową instancję Twojej aplikacji, również powinieneś ją dodać
android:launchMode="singleTask"
.źródło
Podejście Felixa do obsługi głębokich linków jest typowym podejściem do obsługi głębokich linków. Sugerowałbym również sprawdzenie tej biblioteki, aby obsłużyć routing i parsowanie twoich głębokich linków:
https://github.com/airbnb/DeepLinkDispatch
Możesz użyć adnotacji, aby zarejestrować swoją aktywność dla konkretnego identyfikatora URI z głębokim linkiem, a ona wyodrębni parametry, bez konieczności wykonywania zwykłej procedury uzyskiwania segmentów ścieżki, dopasowywania go itp. Możesz po prostu adnotować i aktywność w ten sposób :
źródło
Hej, mam rozwiązanie. Nie ustawiłem kategorii jako „Domyślna”. Używałem również aktywności Main dla zamiaru Dane. Teraz używam innej aktywności dla danych zamiaru. Dzięki za pomoc. :)
źródło
Musisz dodać pseudo-nazwę hosta do aplikacji CALLBACK_URL „//: //” nie ma sensu jako adres URL i nie można go przeanalizować.
źródło
przyklad.php:
źródło
@JRuns Look odpowiedzieć tutaj . Chodzi o to, aby utworzyć HTML z niestandardowym schematem i przesłać go gdzieś. Następnie, jeśli klikniesz niestandardowy link w pliku HTML, nastąpi przekierowanie do Twojej aplikacji. Użyłem tego artykułu dla Androida. Ale nie zapomnij ustawić
Name = "MyApp.Mobile.Droid.MainActivity"
atrybutu pełnej nazwy dla swojej docelowej aktywności.źródło
Na dzień 15.06.2019
to, co zrobiłem, obejmuje wszystkie cztery możliwości otwarcia adresu URL.
tzn. z
http
/https
i 2 zwww
prefiksem i 2 bezwww
i dzięki temu moja aplikacja uruchamia się teraz automatycznie, bez pytania o wybranie przeglądarki i innej opcji.
źródło