How to close another app in Android?

后端 未结 4 1535
悲哀的现实
悲哀的现实 2020-11-29 06:34

I have been developing an app, and I need to close another app in my code. Does anyone know any api to call to close an app?

BTW: my app will be pre-installed.

相关标签:
4条回答
  • 2020-11-29 06:47

    Since Android 2.2 (i.e. going forward), you can only close the background processes of other apps, you are no longer able to close their main activities.

    If your app is targeting Android <2.2, look atandroid.permission.RESTART_PACKAGE.

    If you want it to work properly on 2.2 and above (which you should :-)), look at android.permission.KILL_BACKGROUND_PROCESSES, but again, this only closes background services and such and might "mess up" the other app rather than doing any good.

    With the right permissions, you can then do the following:

    private ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    am.restartPackage("com.jimmy.appToBeClosed");
    
    0 讨论(0)
  • 2020-11-29 06:56

    If both applications are yours, you can use AIDL for inter-process communication to send a message telling the other application to close. See http://developer.android.com/guide/developing/tools/aidl.html.

    0 讨论(0)
  • 2020-11-29 06:59

    Try This

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

    In manifest file add this

    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>
    
    0 讨论(0)
  • 2020-11-29 07:00

    You don't ever really want to close another application, due to Android activity lifecycle.
    There's no benefit, and always detriment to closing another app if it's not yours, and very little benefit to closing your own.

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

    If you know for certain that you'll never, ever need a root activity and its children (an "app"), you can stop it to free memory (it doesn't free that much), but if you do the user may restart it while it's still in cache, stopped, which can cause problems if the stopped state is restored. So this is a bad practice.

    0 讨论(0)
提交回复
热议问题