Wiem, jak aktualizować własne programy i potrafię otwierać programy za pomocą predefiniowanego Uri (na przykład dla smsów lub e-maili)
Muszę wiedzieć, jak mogę stworzyć intencję, aby otworzyć MyTracks lub inną aplikację, której nie wiem, jakich zamiarów słuchają.
Otrzymałem te informacje z DDMS, ale nie udało mi się zmienić tego w intencję, której mogę użyć. Jest to pobierane podczas ręcznego otwierania MyTracks.
Dzięki za pomoc
05-06 11:22:24.945: INFO/ActivityManager(76): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks bnds=[243,338][317,417] }
05-06 11:22:25.005: INFO/ActivityManager(76): Start proc com.google.android.maps.mytracks for activity com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks: pid=1176 uid=10063 gids={3003, 1015}
05-06 11:22:26.995: INFO/ActivityManager(76): Displayed activity com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks: 1996 ms (total 1996 ms)
źródło
onCreate
=>Bundle extras = getIntent().getExtras()
=>if(extras != null) { extras.getString("blah") }
etcgetPackageManager().getLaunchIntentForPackage()
już robi to wszystko dla Ciebie github.com/android/platform_frameworks_base/blob/master/core/…Mam taką pracę,
Przykładowe użycie:
Mam nadzieję, że to komuś pomoże.
źródło
getLaunchIntentForPackage
połączenia.getLaunchIntentForPackage()
już dodaje kategorię, patrz źródło: github.com/android/platform_frameworks_base/blob/master/core/…EDYTOWAĆ :
jak sugerowano w komentarzach, dodaj jedną linię wcześniej
startActivity(intent);
źródło
Jeśli masz już nazwę pakietu, którą chcesz aktywować, możesz użyć następującego kodu, który jest nieco bardziej ogólny:
Zauważyłem, że działa lepiej w przypadkach, w których główna czynność nie została znaleziona zwykłą metodą rozpoczynania działania MAIN.
źródło
Oto kod mojego rozwiązania bazującego na rozwiązaniu MasterGaurav:
źródło
Korzystając z rozwiązania z inversus, rozszerzyłem snippet o funkcję, która zostanie wywołana, gdy żądana aplikacja nie zostanie w danym momencie zainstalowana. Więc to działa tak: Uruchom aplikację według nazwy pakietu. Jeśli nie zostanie znaleziony, otwórz Android Market - Google Play dla tego pakietu .
I jest używany w ten sposób:
źródło
Użyj tego :
źródło
Otwórz aplikację, jeśli istnieje, lub otwórz aplikację Play Store, aby ją zainstalować:
źródło
Aby rozpocząć inną aktywność aplikacji z mojej aktywności aplikacji. U mnie działa dobrze.
Poniższy kod zadziała, jeśli inna aplikacja jest już zainstalowana w telefonie, w przeciwnym razie nie będzie możliwe przekierowanie z jednej aplikacji do innej, więc upewnij się, że Twoja aplikacja została uruchomiona, czy nie
źródło
// To działa na Androidzie Lollipop 5.0.2
źródło
Ponieważ aplikacje nie mogą zmieniać wielu ustawień telefonu, możesz otworzyć działanie związane z ustawieniami tak samo, jak inną aplikację.
Spójrz na dane wyjściowe LogCat po tym, jak faktycznie ręcznie zmodyfikowałeś ustawienie:
Następnie użyj tego, aby wyświetlić stronę ustawień z aplikacji:
źródło
Dla poziomu API 3+ nic więcej niż jeden wiersz kodu:
Intent intent = context.getPackageManager().getLaunchIntentForPackage("name.of.package");
Zwróć zamiar uruchomienia CATEGORY_INFO (aplikacje bez aktywności programu uruchamiającego, na przykład tapety, często używają tego do podania pewnych informacji o aplikacji), a jeśli go nie ma, zwraca CATEGORY_LAUNCH pakietu, jeśli istnieje.
źródło
Jeśli próbujesz rozpocząć USŁUGĘ, a nie działalność, to zadziałało:
Jeśli używasz metody intent.setComponent (...), jak wspomniano w innych odpowiedziach, możesz otrzymać ostrzeżenie „Niejawne intencje ze startService nie są bezpieczne”.
źródło
Alternatywnie możesz również otworzyć intencję ze swojej aplikacji w innej aplikacji za pomocą:
gdzie
uri
jest łącze głębokie do innej aplikacjiźródło
Użyj następujących:
źródło
Uruchom aplikację z innej aplikacji na Androida
źródło
Jeśli chcesz otworzyć inną aplikację, która nie jest zainstalowana, możesz wysłać ją do Google App Store w celu pobrania
Najpierw utwórz na przykład metodę openOtherApp
2.- Użytkowanie
źródło
Wypróbuj ten kod, mam nadzieję, że to ci pomoże. Jeśli ten pakiet jest dostępny, spowoduje to otwarcie aplikacji lub otwarcie sklepu Play w celu pobrania
źródło
Możesz użyć tego polecenia, aby znaleźć nazwy pakietów zainstalowanych na urządzeniu:
Źródła: http://www.aftvnews.com/how-to-determine-the-package-name-of-an-android-app/
źródło
źródło