【问题标题】:Android - Kill another app without system permissionAndroid - 在没有系统许可的情况下杀死另一个应用程序
【发布时间】:2019-10-23 10:14:33
【问题描述】:

我有一个可以启动其他应用的应用。

这行得通,我能做到。

现在,我还想杀死由我的应用启动的应用。

但我找不到这样做的方法(我的应用没有系统权限)。

我试图列出所有当前正在运行的进程以获取它们的 PID 并用它杀死,但我只能获取我的应用程序的 PID。

我试图杀死后台进程(我知道应用程序的包名)但它不起作用。

那么,有没有办法在没有系统权限的情况下用我的应用杀死其他应用?

【问题讨论】:

  • 一般来说,你的应用不能杀死其他应用/进程

标签: java android kotlin android-activity


【解决方案1】:

我认为,首先,您应该认真阅读 Google 指南,以确保您必须发布它。必须向最终用户征求所有内容的许可。最终,您可以查看我是否没有弄错哪些其他软件包在运行时,一旦您知道了,您可能会找到杀死它们的方法。 试试这个并在你的清单上添加“android.permission.KILL_BACKGROUND_PROCESSES”权限:

private void killOtherApps(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);    
        }

    }

}

【讨论】:

  • 我的应用不会在“Google Play”中发布。它仅适用于我们的具有特定设备且没有 Google 服务的企业。所以我不需要为此担心。是的,我同意这个逻辑,但我无法获取其他应用程序的进程 ID,我只能获取我的应用程序的进程 ID。
  • 好的,我用代码编辑我的回复来完成它
  • 我已经尝试了你的代码,我得到了其他包名,但是 killBackgroundProcesses 不起作用。也许这个功能不适合我的情况,因为我想杀死的应用程序正在前台运行。感谢您的帮助。
猜你喜欢
  • 2013-08-05
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-20
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多