如何杀死任何在android中使用其软件包名称的应用程序



我正试图通过使用它的包名来杀死一个正在运行的应用程序,如下所示:

String nameofProcess=your-package-name;
    ActivityManager manager=(ActivityManager)MainActivity.this.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> listOfProcess=manager.getRunningAppProcesses();
    for(ActivityManager.RunningAppProcessInfo process:listOfProcess)
    {
        if(process.processName.contains(nameofProcess))
        {
            Log.e("Proccess" , process.processName + " : " + process.pid);
            android.os.Process.killProcess(process.pid);
            android.os.Process.sendSignal(process.pid, android.os.Process.SIGNAL_KILL);
            manager.killBackgroundProcesses(process.processName);
            break;
        }
    }

但这并没有扼杀这款应用。当我执行最近的任务时,它仍然存在。有什么问题吗。

在清单文件中添加以下权限:

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

下面的功能将使用其程序包名称杀死应用程序:

private void killAppBypackage(String packageTokill){
        List<ApplicationInfo> packages;
        PackageManager pm;
        pm = getPackageManager();
        //get a list of installed apps.
        packages = pm.getInstalledApplications(0);

        ActivityManager mActivityManager = (ActivityManager) MainActivity.this.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)) {
                continue;
            }
            if(packageInfo.packageName.equals(packageTokill)) {
                mActivityManager.killBackgroundProcesses(packageInfo.packageName);    
            }
        }
    }  

下面的代码杀死了除当前应用程序和系统应用程序外的所有正在运行的应用程序:

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

                ActivityManager mActivityManager = (ActivityManager) MainActivity.this.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)) {
                        continue;
                    }
                    mActivityManager.killBackgroundProcesses(packageInfo.packageName);
                }

最新更新