Chcę uruchomić zainstalowany pakiet z mojej aplikacji na Androida. Zakładam, że jest to możliwe przy użyciu intencji, ale nie znalazłem sposobu, aby to zrobić. Czy jest link, gdzie można znaleźć informacje?
java
android
android-intent
Bastian
źródło
źródło
Odpowiedzi:
Jeśli nie znasz głównej aktywności, możesz użyć nazwy pakietu do uruchomienia aplikacji.
źródło
CATEGORY_INFO
, a następnie głównej aktywności w kategoriiCATEGORY_LAUNCHER
. Zwraca wartość null, jeśli żadna z nich nie zostanie znaleziona. ”Wiem, że udzielono odpowiedzi, ale oto jak zaimplementowałem coś podobnego:
Jeszcze lepiej, oto metoda:
Usunięto duplikat kodu:
źródło
Znalazłem rozwiązanie. W pliku manifestu aplikacji znalazłem nazwę pakietu: com.package.address i nazwę głównego działania, które chcę uruchomić: MainActivity Następujący kod uruchamia tę aplikację:
źródło
źródło
Oto mój przykład uruchamiania skanera kodów kreskowych / QR z mojej aplikacji, jeśli ktoś uzna to za przydatne
źródło
Edytuj w zależności od komentarza
W niektórych wersjach - jak sugerowano w komentarzach - zgłoszony wyjątek może być inny.
Dlatego poniższe rozwiązanie zostało nieznacznie zmodyfikowane
Oryginalna odpowiedź
Chociaż dobrze odpowiedział, istnieje dość prosta implementacja, która obsługuje, jeśli aplikacja nie jest zainstalowana. Robię to w ten sposób
Zamień „applicationId” na pakiet, który chcesz otworzyć, taki jak com.google.maps itp.
źródło
PackageManager.getLaunchIntentForPackage(...)
metoda zwraca null, jeśli nazwa pakiet nie jest rozpoznawany. Nie rzuca sięPackageManager.NameNotFoundException
. Zobacz tutaj .startActivity(null)
na emulatorze Androida 10 i rzuca a,NullPointerException
a nie aPackageManager.NameNotFoundException
.startActivity(Intent intent)
metody, gdy ma ona wartość zerowąIntent
i co sprawia, że tak mówisz? Android deweloperów dokumentacja stanowi jedynie, że będzie rzucaćActivityNotFoundException
.źródło
Jeśli chcesz otworzyć określoną aktywność innej aplikacji, możemy z tego skorzystać.
Jeśli potrzebujesz innej aplikacji, zamiast Pokazywać Toast możesz wyświetlić okno dialogowe. Za pomocą okna dialogowego możesz doprowadzić użytkownika do Play-Store w celu pobrania wymaganej aplikacji.
źródło
com.android.settings.fuelgauge.PowerUsageSummary
jest tylko aktywność-alias zcom.android.settings.Settings$PowerUsageSummaryActivity
i został usunięty w Android Pie , więc summitted edit, aby ta odpowiedź garnitur Pie. Zauważ, że jest również kompatybilny ze starszą wersją, zobacz zatwierdzenie AOSP w dniu 10 listopada 2011 af9252849fd94c1f2859c56a4010900ea38a607e itp.Jeśli znasz dane i działania, na które zareaguje zainstalowany pakiet, po prostu dodaj te informacje do instancji użytkownika przed jego uruchomieniem.
Jeśli masz dostęp do AndroidManifest drugiej aplikacji, możesz tam zobaczyć wszystkie potrzebne informacje.
źródło
Kroki, aby rozpocząć nową aktywność w następujący sposób:
1.Zamierz zamiar paczki
2.Jeśli intencją jest zerowe przekierowanie użytkownika do playstore
3.Jeśli zamiar nie jest aktywnością zerową otwartą
źródło
Możliwe jest rozpoczęcie działania aplikacji przy użyciu
Intent.setClassName
zgodnie z dokumentacją.Przykład:
Aby otworzyć go poza bieżącą aplikacją, dodaj tę flagę przed rozpoczęciem zamiaru.
Powiązana odpowiedź tutaj
źródło
źródło