2010-09-22 14 views
6

He estado desarrollando una aplicación y necesito cerrar otra en mi código. ¿Alguien sabe alguna api para llamar para cerrar una aplicación?¿Cómo cerrar otra aplicación en Android?

BTW: mi aplicación estará preinstalada.

gracias

+1

no hacen esto. Se supone que no debes 'cerrar' las aplicaciones de otras personas – Falmarri

Respuesta

6

Desde Android 2.2 (es decir, en adelante), solo puede cerrar el background processes de otras aplicaciones, ya no podrá cerrar sus actividades principales.

Si su aplicación apunta a Android < 2.2, mire android.permission.RESTART_PACKAGE.

Si quieres que funcione correctamente en 2.2 y superior (que deberías :-)), mira android.permission.KILL_BACKGROUND_PROCESSES, pero nuevamente, esto solo cierra los servicios en segundo plano y podría "estropear" la otra aplicación en lugar de hacer ningún bien.

con los permisos correctos, a continuación, puede hacer lo siguiente:

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

am.restartPackage() ha quedado en desuso, ahora usan otra api "killBackgroundProcesses()". Pero gracias, realmente lo aprecio. – Jimmy

+0

@Nick este tipo puso su respuesta en otra pregunta! ¡Robo! https://stackoverflow.com/a/20709219/250260 – Jorgesys

-1

que no siempre realmente desea cerrar otra aplicación, debido al ciclo de vida de la actividad de Android.
No hay ningún beneficio, y siempre se perjudica el cierre de otra aplicación si no es suya, y muy poco beneficio para cerrar la suya.

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

Si sabe con certeza que usted nunca, nunca necesita una actividad de la raíz y sus hijos (una "aplicación"), se puede detener y liberar memoria (no libre que gran parte), pero si lo hace, el usuario puede reiniciarlo mientras está todavía en caché, detenido, lo que puede causar problemas si se restablece el estado detenido. Entonces esta es una mala práctica.

+1

Además, preinstalada es la peor idea posible. Dile a tus jefes que forzar el software de un usuario es malo. ¿Por casualidad trabajas para Verizon? –

+0

Ciertamente tengo un caso de uso válido para forzar el cierre de una aplicación rogue de Android. La aplicación Dialer en mi dispositivo está funcionando debido a los errores en su implementación. Específicamente, está agotando la batería y no habrá actualizaciones nunca, primero porque es Android, y segundo porque mi teléfono es viejo. He encontrado que cerrar la fuerza después de eventos como llamadas no afectan negativamente el uso de mi teléfono, pero sí guarda la batería, por lo tanto, me gustaría tener un servicio que monitoree y fuerce a cerrar el marcador en lugar de hacerlo manualmente. –

2

Trate Esta

ActivityManager am = (ActivityManager) getApplicationContext().getSystemService("activity"); 
    Method forceStopPackage;     
    forceStopPackage =am.getClass().getDeclaredMethod("forceStopPackage",String.class); 
    forceStopPackage.setAccessible(true); 
    forceStopPackage.invoke(am, pkg); 

En este archivo de manifiesto añadir

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

no puede encontrar esto usa el permiso en el manifiesto de Android – Ari

+0

¡Esto realmente funciona! (Mi aplicación está firmada con el certificado del sistema) –

+0

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

Cuestiones relacionadas