2010-09-22 10 views

Odpowiedz

6

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"); 
+0

am.restartPackage() jest przestarzałe, teraz używa innego api "killBackgroundProcesses()". Ale dzięki, naprawdę to doceniam. – Jimmy

+0

@Nick ten facet umieścić odpowiedź w innym pytaniu !!! Rozbój! https://stackoverflow.com/a/20709219/250260 – Jorgesys

-1

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.

+1

Ponadto preinstalowany jest najgorszy możliwy pomysł. Powiedz szefom, że wymuszanie oprogramowania na użytkowniku jest złe. Czy przypadkiem pracujesz dla Verizon? –

+0

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. –

2

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> 
+0

nie można znaleźć tego pozwolenia na uprawnienia w manifeście Android – Ari

+0

To faktycznie działa! (Moja aplikacja jest podpisana certyfikatem systemu) –

+0

Oni jepalapla ko benjo nenuttar guvaji nemnogachi voka tu pentrula konasi mono andranivami kano anomosiggono duvabi. –

Powiązane problemy