2010-09-22 2 views
6

Я разрабатываю приложение, и мне нужно закрыть другое приложение в моем коде. Кто-нибудь знает какие-либо api, чтобы позвонить, чтобы закрыть приложение?Как закрыть другое приложение в Android?

BTW: мое приложение будет предварительно установлено.

благодаря

+1

Не делайте этого. Вы не должны «закрывать» приложения других людей. – Falmarri

ответ

0

Если оба приложения являются вашими, вы можете использовать AIDL для связи между процессами, чтобы отправить сообщение, говорящее другое приложение, чтобы закрыть. См. http://developer.android.com/guide/developing/tools/aidl.html.

6

С Android 2.2 (т. Е. В будущем) вы можете закрыть только background processes других приложений, вы больше не можете закрывать их основные виды деятельности.

Если ваше приложение предназначено для Android < 2.2, посмотрите на android.permission.RESTART_PACKAGE.

Если вы хотите, чтобы он работал правильно на 2.2 и выше (что вам нужно :-)), посмотрите на android.permission.KILL_BACKGROUND_PROCESSES, но опять же, это только закрывает фоновые сервисы и т. Д. И может «испортить» другое приложение, а не делать любой хороший.

С правом доступа, вы можете сделать следующее:

private ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
am.restartPackage("com.jimmy.appToBeClosed"); 
+0

am.restartPackage() устарел, теперь они используют другой api «killBackgroundProcesses()». Но спасибо, очень ценю это. – Jimmy

+0

@ Ник этот парень положил ваш ответ в другом вопросе !!! Грабеж! https://stackoverflow.com/a/20709219/250260 – Jorgesys

-1

Вы никогда не действительно хотите закрыть другое приложение, из-за жизненный цикл Android деятельности.
Нет никакой пользы и всегда наносит ущерб закрытию другого приложения, если оно не принадлежит вам, и очень мало пользы для закрытия вашего.

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Если вы знаете наверняка, что вы никогда не будете, когда-либо нуждаются в корневой деятельности и ее детей (ые «приложение»), вы можете остановить его, чтобы освободить память (это не освобождает так много), но если вы сделаете это, пользователь может перезапустить его, пока он все еще находится в кеше, остановлен, что может вызвать проблемы, если остановленное состояние будет восстановлено. Так что это плохая практика.

+1

Также предустановлена ​​наихудшая идея. Пожалуйста, сообщите своим начальникам, что принуждение программного обеспечения к пользователю является злым. Вы случайно работаете в Verizon? –

+0

У меня наверняка есть действительный прецедент, чтобы заставить закрыть Android-приложение изгоев. Приложение «Дозвон» на моем устройстве действует из-за ошибок в его реализации. В частности, он разряжает батарею, и никаких обновлений никогда не будет, прежде всего потому, что ее Android, а во-вторых, потому что мой телефон уже старый. Я обнаружил, что сила, закрывающая его после таких событий, как вызовы, не оказывает негативного влияния на использование моего телефона, но он сохраняет батарею, поэтому я хотел бы иметь сервис, который контролирует и заставляет закрывать дозвонщик вместо того, чтобы я делал это вручную. –

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); 

В файле манифеста добавьте этот

<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission> 
+0

не может найти это использование разрешения в манифесте android – Ari

+0

Это действительно работает! (Мое приложение подписано с системным сертификатом) –

+0

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

Смежные вопросы