我试图杀死我的另一个应用程序。但是这段代码无法杀死我的另一个应用程序。我知道杀死另一个应用程序是一个坏主意。但我有学习目的,我试图杀人。我的代码部分:
Button runningApp = (Button) findViewById(R.id.runningApp);
runningApp.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
String nameOfProcess = "com.example.filepath";
ActivityManager manager = (ActivityManager)ApplicationActivity.this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
{
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" />
<uses-permission android:name="android.permission.GET_TASKS" />
每次我看到LogCat时,特定的应用程序都在后台运行。我错在哪里?
答案 0 :(得分:17)
您只能终止与正在执行查杀的用户ID相同的进程。如果你试图杀死你自己的进程它应该工作。否则你不能这样做(除非你有一个root设备,你的应用程序有root权限。)
答案 1 :(得分:3)
如果您的设备已植根且您的应用位于/ system / app中,那么您可以通过以下方式禁用并启用它来杀死其他应用:
pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
pm.setApplicationEnabledSetting(packageName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
这会杀死应用并再次访问它。请注意,主屏幕快捷方式会消失。