问题:我想杀死后台申请流程 我们在后台线程/服务中调用以下方法,但它不起作用。
我们尝试了一些网上可用的方法但没有成功杀死后台进程/应用程序 我的设备已经具有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)方法 但是我们无法在服务中使用它。
答案 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