如何关闭Android服务中的前台应用?

时间:2016-11-25 04:42:46

标签: android android-service android-package-managers

我想关闭Android服务中的当前前台应用。但是,它在服务中不起作用。你能帮我解决一下吗?感谢。

        ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE);
        List<ApplicationInfo> packages;
        PackageManager pm;
        pm = getPackageManager();
        //get a list of installed apps.
        packages = pm.getInstalledApplications(0);

        ActivityManager mActivityManager = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
        String myPackage = getApplicationContext().getPackageName();
        for (ApplicationInfo packageInfo : packages) {
            if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue;
            if(packageInfo.packageName.equals(myPackage )) {
                Log.d(TAG,"*************"+packageInfo.packageName);
                mActivityManager.killBackgroundProcesses(packageInfo.packageName);
            }
        }

它也转到了函数killBackgroundProcesses,但它没有关闭我当前的前台应用程序。我在Android L中经过许可

运行
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

1 个答案:

答案 0 :(得分:0)

您正试图在代码中杀死后台进程

mActivityManager.killBackgroundProcesses(packageInfo.packageName);

您应该使用:

android.os.Process.killProcess(android.os.Process.myPid());

更改上面一项并检查。

杀死其他应用程序是一种严重的安全问题因此受到严格监管。您只能终止与正在执行查杀的程序包ID相同的进程。如果您试图杀死自己的进程,它将适用于您无法执行的其他应用程序(除非您拥有root设备并且您的应用程序具有root权限)。

您可以参考此link了解详情。