google可能为了安全考虑,在5.1.+后调用activitymanager.getRunningAppProcesses()方法只能返回你自己应用的进程,那如何在5.1.+后获取运行中进程呢?一个大神stackoverflow给出了答案(点击跳转)。如果你能熟练的导入第三方库,那么相信你可以不用向下看了,如果你选择向下看,那我会用白话文教你一步步实现。首先到这位答主的github上下载他上传的开源库,梯子自备(点击跳转)。没有梯子可以到我的个人百度云下载:链接: http://pan.baidu.com/s/1kVjjPsF 密码: ag6u
下载完成后解压目录结构
我们只需要其中的红线框住的部分,但是直接导入,肯定会处很多的问题,我们先来处理一部分,打开libsuperuser
其中你框选的三个文件是我们要注意的。如果要导入的文件中有build.gradle或AndroidManifest.xml、project.properties文件,需要将其用记事本打开后,将里面的gradle及Android版本修改为自己使用的,如果不知道的话可以新建一个工程或者打开以前建的工程中的相关文件进行对比查看。
修改完成后来到android studio的project视图下将他粘贴进去
粘贴进去肯定会叫你同步,然后就同步罗,会发现一些问题,其中常见的是提示:
Error:(2, 0) Plugin with id ‘com.github.dcendents.android-maven’ not found
Error:(2, 0) Plugin with id ‘com.jfrog.bintray.gradle’ not found
这是因为有两个插件我们没有装上,我们来到Project下,在那个build.grade里面添加全局依赖
将这两个依赖的插件写上,建议写一个同步一次分两次进行,第二次下载需要比较长的时间
//自动化maven打包插件
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
//自动上传至bintray插件
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0"
填写好后我们会发现没有编译错误了,那我们要怎么去用添加的这个开源库呢??来到android视图下的build.gradle(Module.app)下添加依赖
compile 'eu.chainfire:libsuperuser:1.0.0.+'
重新同步后,我们就可以调用里面的方法了,新建一个ProgressManager类
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
import java.util.List;
import eu.chainfire.libsuperuser.Shell;
/**
* @author Jared Rummler
*/
public class ProcessManager {
private static final String TAG = "ProcessManager";
private static final String APP_ID_PATTERN;
static {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
// Android 4.2 (JB-MR1) changed the UID name of apps for multiple user account support.
APP_ID_PATTERN =