android - 如何在android中使用其包名杀死任何应用程序

标签 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;
        }
    }

但它并没有杀死应用程序。当我转到最近的任务时,它仍然存在。 有什么问题吗?

最佳答案

在您的 list 文件中添加以下权限:

<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);
                }

关于android - 如何在android中使用其包名杀死任何应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38811991/

相关文章:

android - 如何在 android 上以非零退出值 2 完成 ndk 设置?

android - iOS录制m4a文件不能播放android

android - 使用查询从 Firestore 中高效地检索联系人数据

android - 在使用应用程序小部件提供程序时,有没有办法在 RemoteViews 中使用 setColorFilter(int color, PorterDuff.Mode mode)

android - 你能给我一些免费的安卓市场吗

java - 显示壁纸android的进度

android - 如何修复挂起的 PhoneGap .apk 版本?

android - 为什么 App Bundle 比 .apk 文件更重要?

android - 如何在接收短信时获取联系人姓名

android - Web 浏览器应用程序 - 如何拦截 URL Intent ?