在android里面,我可以使用adb 命令去查询一个进程,然后杀死它,比如:
ps -A |grep -e "com.test.app" //查询关键字是com.test.app的进程号
kill -9 112119 //将查询出来的进程杀死,比如进程号是112119
在java代码里面也能实现,具体代码如下:
public void killApp() {
Log.d(TAG, "killApp1");
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processes = activityManager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : processes) {
Log.d(TAG, "processes.processName" + processInfo.processName);
if (processInfo.processName.equals("com.test.app")) {
String processName = processInfo.processName;
Log.d(TAG, "processName" + processName);
int pid = processInfo.pid;
Log.d(TAG, "pid" + pid);
android.os.Process.killProcess(pid);
break;
}
}
}
可能会用到以下权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.KILL_PROCESS" />
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
这里需要注意一下:上诉的方法只能kill掉application层级的进程,需要杀死其他进程需要运行shell脚本的方式了
其他方式就是使用shell脚本,可以参考我的另一个文章: