Rozwijam aplikację i muszę zamknąć kolejną aplikację w moim kodzie. Czy ktoś zna jakieś api, aby zadzwonić, aby zamknąć aplikację?Jak zamknąć kolejną aplikację w systemie Android?
BTW: moja aplikacja zostanie wstępnie zainstalowana.
dzięki
Rozwijam aplikację i muszę zamknąć kolejną aplikację w moim kodzie. Czy ktoś zna jakieś api, aby zadzwonić, aby zamknąć aplikację?Jak zamknąć kolejną aplikację w systemie Android?
BTW: moja aplikacja zostanie wstępnie zainstalowana.
dzięki
Jeżeli obie aplikacje są twoje, można użyć AIDL do komunikacji między procesami, aby wysłać wiadomość z informacją o inną aplikację do blisko. Zobacz http://developer.android.com/guide/developing/tools/aidl.html.
Od Android 2.2
(tj. Do przodu) można tylko zamykać tylko inne aplikacje, nie można już zamknąć głównych działań.
Jeśli Twoja aplikacja jest kierowana na Androida < 2.2, spójrz na numer android.permission.RESTART_PACKAGE
.
Jeśli chcesz, aby działał poprawnie w wersji 2.2 i nowszych (które powinieneś :-)), spójrz na android.permission.KILL_BACKGROUND_PROCESSES
, ale to tylko zamknie usługi tła i takie i może "zepsuć" inną aplikację, zamiast robić coś dobrego.
Z odpowiednich uprawnień, można wtedy wykonać następujące czynności:
private ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
am.restartPackage("com.jimmy.appToBeClosed");
Nie kiedykolwiek naprawdę chcesz zamknąć inną aplikację, ze względu na Android aktywności cyklu.
Nie ma żadnych korzyści i zawsze szkodzi zamknięcie innej aplikacji, jeśli nie jest ona Twoja, a bardzo niewiele korzyści przy zamykaniu.
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
Jeśli wiesz na pewno, że nigdy nie będziesz, kiedykolwiek potrzebują aktywności korzeni i jej dzieci (an „APP”), można zatrzymać go do wolnej pamięci (to nie tak dużo za darmo), ale jeśli to zrobisz, użytkownik może go zrestartować, gdy jest jeszcze w pamięci podręcznej, zatrzymany, co może spowodować problemy, jeśli stan zatrzymany zostanie przywrócony. Jest to zła praktyka.
Ponadto preinstalowany jest najgorszy możliwy pomysł. Powiedz szefom, że wymuszanie oprogramowania na użytkowniku jest złe. Czy przypadkiem pracujesz dla Verizon? –
Mam na pewno ważny przypadek użycia, by zmusić do zamknięcia nieuczciwą aplikację na Androida. Aplikacja Dialer na moim urządzeniu działa z powodu błędów w implementacji. W szczególności wyczerpuje się bateria i nie będzie żadnych aktualizacji, przede wszystkim dlatego, że jest to Android, a po drugie dlatego, że mój telefon jest stary. Odkryłem, że przymus zamykania go po wydarzeniach takich jak połączenia nie wpływa negatywnie na korzystanie z mojego telefonu, ale oszczędza baterię, dlatego chciałbym mieć usługę, która monitoruje i wymusza zamknięcie dialera zamiast mnie, robiąc to ręcznie. –
Try This
ActivityManager am = (ActivityManager) getApplicationContext().getSystemService("activity");
Method forceStopPackage;
forceStopPackage =am.getClass().getDeclaredMethod("forceStopPackage",String.class);
forceStopPackage.setAccessible(true);
forceStopPackage.invoke(am, pkg);
W pliku manifestu dodać ten
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>
nie można znaleźć tego pozwolenia na uprawnienia w manifeście Android – Ari
To faktycznie działa! (Moja aplikacja jest podpisana certyfikatem systemu) –
Oni jepalapla ko benjo nenuttar guvaji nemnogachi voka tu pentrula konasi mono andranivami kano anomosiggono duvabi. –
nie rób tego. Nie powinno się "zamykać" aplikacji innych ludzi. – Falmarri