杀死android中的另一个后台应用程序

时间:2013-12-26 11:54:42

标签: android

问题:我想杀死后台申请流程 我们在后台线程/服务中调用以下方法,但它不起作用。

我们尝试了一些网上可用的方法但没有成功杀死后台进程/应用程序 我的设备已经具有root permisision。

此处代码

第一种方法:

int value = findPIDbyPackageName("com.google.android.youtube");
 android.os.Process.sendSignal(value, 9);

第二种方法:

ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
 activityManager.killBackgroundProcesses("com.google.android.youtube");

第三种方法:

ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
activityManager.restartPackage("com.google.android.youtube");

第四种方法:

android.os.Process.killProcess(pid);

第五种方法:`

 List<ApplicationInfo> packages;
    PackageManager pm;
    pm = getPackageManager();
    packages = pm.getInstalledApplications(0);

     ActivityManager mActivityManager =   (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);

   for (ApplicationInfo packageInfo : packages) {
        if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue;
        if(packageInfo.packageName.equals("mypackage")) continue; // here my package defines your application package entered in manifest
       else if(packageInfo.packageName.equals("third Party application Package Name")) // if you dont have this package name then prefer playstore url of this app to get packagename
 mActivityManager.killBackgroundProcesses(packageInfo.packageName);
   }      

第六
我们从我们自己的Android应用程序推出了第三方应用程序,如youtube,Subway surf 我们使用startActivityForResultmethod来启动应用程序。

launchApp(&#34; com.imangi.templerun&#34);

protected void launchApp(String packageName) { 
  mIntent = getPackageManager().getLaunchIntentForPackage(packageName); 
  if (mIntent != null) { 
    try { 
      startActivityForResult(mIntent, 101); 
    } catch (ActivityNotFoundException err) { 
      Toast t = Toast.makeText(this, "App not found", Toast.LENGTH_SHORT); t.show(); 
    } 
  } 
}

要关闭应用程序,可以使用finsihActivity(ResposneCode)方法 但是我们无法在服务中使用它。

2 个答案:

答案 0 :(得分:0)

不允许您杀死不属于您的应用的进程。系统将决定何时杀死以及必要时杀死什么。

应用干预只是告诉系统一条消息,Please help me to kill this process, blah blah...,这就是全部。

答案 1 :(得分:0)

Process.killProcess()应该可以使用,这是您的方法编号4.

仔细阅读它的内容。

  

使用给定的PID终止进程。请注意,尽管此API允许   我们要求基于其PID来杀死任何进程,内核会   仍然对您实际能够使用的PID施加标准限制   杀死。通常,这意味着只有运行调用者的进程   包/应用程序以及该应用程序创建的任何其他进程;   共享一个普通UID的软件包也可以互相杀死   过程

在root权限下你应该能够删除内核限制,遗憾的是我不知道如何做到这一点,我建议你搜索本机解决方案,可能是一些C代码,其中有很多净。

同样在您的方法1中,您尝试发送SIGNAL_KILL,尝试发送SIGNAL_QUIT