Jak otworzyć adres URL z kodu we wbudowanej przeglądarce internetowej zamiast w mojej aplikacji?
Próbowałem tego:
try {
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(download_link));
startActivity(myIntent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "No application can handle this request."
+ " Please install a webbrowser", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
ale mam wyjątek:
No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com
Odpowiedzi:
Spróbuj tego:
To mi odpowiada.
Jeśli chodzi o brakujące „http: //”, po prostu zrobiłbym coś takiego:
Prawdopodobnie wstępnie wypełniłbym również Twój tekst EditText, w którym użytkownik wpisuje adres URL „http: //”.
źródło
http://
schemat - pokazany wyjątek sugeruje, że twój URL nie ma schematu.if (!url.startsWith("http://") && !url.startsWith("https://"))
jest częstym błędem, który może prowadzić do adresów URL takich jak file: // i zepsuć kilka dobrych przypadków użycia. Spróbuj przeanalizować identyfikator URI z klasą URI i sprawdź, czy istnieje schemat. Jeśli nie, dodaj „http: //”;)resolveCheck
. Zobacz oficjalne dokumenty : Uwaga: Jeśli na urządzeniu nie ma żadnych aplikacji, które mogłyby odbierać ukryte zamiary, aplikacja ulegnie awarii, gdy wywoła startActivity (). Aby najpierw sprawdzić, czy aplikacja istnieje, aby otrzymać zamiar, wywołaj polecenie resolActivity () na obiekcie Intent.powszechnym sposobem osiągnięcia tego jest następny kod:
które można zmienić na wersję z krótkim kodem ...
lub:
najkrótszy! :
szczęśliwego kodowania!
źródło
Prosta odpowiedź
Możesz zobaczyć oficjalną próbkę od programisty Androida .
Jak to działa
Proszę spojrzeć na konstruktora
Intent
:Możesz przejść
android.net.Uri
instancję do drugiego parametru, a nowa intencja zostanie utworzona na podstawie podanego adresu danych.A potem po prostu zadzwoń
startActivity(Intent intent)
aby rozpocząć nową Aktywność, która jest powiązana z Zamiarem z danym adresem URL.Czy potrzebuję
if
wyciągu czeku?Tak. W docs mówi:
Premia
Możesz pisać w jednym wierszu podczas tworzenia instancji Intent, jak poniżej:
źródło
W 2.3 miałem więcej szczęścia
Różnica polega na użyciu
Intent.ACTION_VIEW
raczej niż ciągu"android.intent.action.VIEW"
źródło
Spróbuj tego:
lub jeśli chcesz, otwórz przeglądarkę internetową w swojej działalności, wykonaj następujące czynności:
a jeśli chcesz użyć sterowania powiększeniem w przeglądarce, możesz użyć:
źródło
Jeśli chcesz pokazać użytkownikowi dialog ze wszystkimi listami przeglądarki, aby mógł wybrać preferowany, oto przykładowy kod:
źródło
http
lubhttps
, a java dobrą praktyką jest deklarowanie „magicznych ciągów” jako stałych.context.startActivity
. Bardzo przydatne, gdy wywołuje się go z klasy zewnętrznejTak jak rozwiązania napisane przez inne (które działają dobrze), chciałbym odpowiedzieć na to samo, ale wskazówką, którą moim zdaniem wolałby najczęściej używać.
Jeśli chcesz, aby aplikacja zaczęła się otwierać w nowym zadaniu, niezależnie od Twojego, zamiast pozostać na tym samym stosie, możesz użyć tego kodu:
Istnieje również sposób otwarcia adresu URL w niestandardowych kartach Chrome . Przykład w Kotlin:
źródło
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
jest przestarzałyinna opcja W Załaduj adres URL w tej samej aplikacji za pomocą Webview
źródło
Możesz także iść tą drogą
W xml:
W kodzie Java:
W Manifeście nie zapomnij dodać uprawnienia do Internetu ...
źródło
Widoku internetowego można użyć do załadowania adresu URL do aplikacji. Adres URL może zostać podany przez użytkownika w widoku tekstowym lub można go zakodować na stałe.
Nie zapomnij także o uprawnieniach internetowych w AndroidManifest.
źródło
Wersja krótkiego kodu ...
źródło
W bloku try wklej następujący kod, Android Intent używa bezpośrednio linku w nawiasach klamrowych URI (Uniform Resource Identifier) w celu identyfikacji lokalizacji twojego linku.
Możesz spróbować:
źródło
Prosta i najlepsza praktyka
Metoda 1:
Metoda 2:
źródło
context!!.packageManager
zamiastgetPackageManager()
wFragment
.źródło
źródło
Odpowiedź MarkB jest słuszna. W moim przypadku używam Xamarin, a kod do użycia z C # i Xamarin to:
Te informacje są pobierane z: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/
źródło
Niestandardowe karty Chrome są teraz dostępne:
Pierwszym krokiem jest dodanie biblioteki obsługi niestandardowych kart do pliku build.gradle:
A następnie, aby otworzyć niestandardową kartę chrome:
Aby uzyskać więcej informacji: https://developer.chrome.com/multidevice/android/customtabs
źródło
Na podstawie odpowiedzi Marka B i poniższych komentarzy:
źródło
android.webkit.URLUtil
metodaguessUrl(String)
działa idealnie dobrze (nawet zfile://
lubdata://
) odApi level 1
(Android 1.0). Użyj jako:W wywołaniu aktywności:
Sprawdź pełny
guessUrl
kod, aby uzyskać więcej informacji.źródło
OK, sprawdziłem każdą odpowiedź, ale jakiej aplikacji ma linkowanie z tym samym adresem URL, którego użytkownik chce użyć?
Dzisiaj dostałem tę sprawę i odpowiedź brzmi
browserIntent.setPackage("browser_package_name");
np .:
Dziękuję Ci!
źródło
Prosty, przeglądanie strony za pomocą intencji,
użyj tego prostego kodu, aby wyświetlić swoją stronę internetową w aplikacji na Androida.
Dodaj pozwolenie internetowe w pliku manifestu,
źródło
Ten błąd wystąpił z powodu nieprawidłowego adresu URL, system operacyjny Android nie może znaleźć widoku akcji dla danych. Sprawdziłeś więc, czy adres URL jest prawidłowy czy nie.
źródło
Myślę, że to jest najlepsze
Umieść poniższy kod w klasie globalnej
źródło
W ten sposób wykorzystuje się metodę, która pozwala na wprowadzenie dowolnego ciągu zamiast stałego wejścia. Powoduje to zaoszczędzenie niektórych wierszy kodu, jeśli są używane wielokrotnie, ponieważ do wywołania metody potrzebne są tylko trzy wiersze.
Zastosowanie tej metody sprawia, że jest ona uniwersalnie użyteczna. IT nie musi być umieszczane w konkretnym działaniu, ponieważ możesz go użyć w następujący sposób:
Lub jeśli chcesz uruchomić go poza działaniem, wystarczy wywołać startActivity w instancji działania:
Jak widać w obu tych blokach kodu, istnieje kontrola zerowa. Dzieje się tak, ponieważ zwraca wartość null, jeśli nie ma aplikacji do obsługi zamiaru.
Domyślną metodą tej metody jest HTTP, jeśli nie zdefiniowano żadnego protokołu, ponieważ istnieją strony internetowe, które nie mają certyfikatu SSL (co jest potrzebne do połączenia HTTPS), a te przestaną działać, jeśli spróbujesz użyć HTTPS i nie ma go . Każda witryna może nadal wymuszać przejście na HTTPS, więc strony te i tak trafią na HTTPS
Ponieważ ta metoda wykorzystuje zasoby zewnętrzne do wyświetlenia strony, nie ma potrzeby deklarowania uprawnień INternet. Musi to zrobić aplikacja wyświetlająca stronę internetową
źródło
// Odbiornik OnClick
// Twoja metoda użycia
źródło
Wystarczy otworzyć krótki, aby otworzyć adres URL w przeglądarce:
źródło
Odpowiedź Kotlina:
Dodałem rozszerzenie,
Uri
aby było to jeszcze łatwiejszeJako bonus, tutaj jest prosta funkcja rozszerzenia, aby bezpiecznie przekonwertować ciąg na Uri.
źródło
Szukałem tego przez długi czas, ponieważ wszystkie inne odpowiedzi otwierały domyślną aplikację dla tego linku, ale nie domyślną przeglądarkę i tego właśnie chciałem.
W końcu udało mi się to zrobić:
BTW, możesz zauważyć.
context
Cokolwiek, ponieważ użyłem tego do statycznej metody użycia, jeśli robisz to w działaniu, nie jest to konieczne.źródło
Sprawdź, czy Twój adres URL jest poprawny. Dla mnie była niechciana przestrzeń przed adresem URL.
źródło
Spróbuj tego .. Pracował dla mnie!
Kod XML: -
--------- LUB ------------------
źródło