如何在 Android 中关闭另一个应用程序?

IT小君   2021-10-20T03:11:55

我一直在开发一个应用程序,我需要在我的代码中关闭另一个应用程序。有谁知道可以调用关闭应用程序的任何 API?

顺便说一句:我的应用程序将被预装。

谢谢

评论(4)
IT小君

由于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");
2021-10-20T03:11:55   回复
IT小君

尝试这个

    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>
2021-10-20T03:11:55   回复
IT小君

如果这两个应用程序都是你的,你可以使用 AIDL 进行进程间通信,以发送消息告诉另一个应用程序关闭。请参阅http://developer.android.com/guide/developing/tools/aidl.html

2021-10-20T03:11:55   回复
IT小君

由于 Android 活动生命周期,您真的不想关闭另一个应用程序。
没有任何好处,如果另一个应用程序不是你的,那么关闭它总是有害的,关闭你自己的应用程序几乎没有好处。

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

如果您确定您永远不会需要根活动及其子活动(“应用程序”),您可以停止它以释放内存(它不会释放那么多),但如果您这样做,用户可能会在它仍在缓存中时重新启动它,停止,如果停止状态恢复,这可能会导致问题。所以这是一个不好的做法。

2021-10-20T03:11:55   回复