86 lines
2.6 KiB
Java
86 lines
2.6 KiB
Java
package com.mogo.utils;
|
|
|
|
import android.app.ActivityManager;
|
|
import android.app.ActivityManager.RunningAppProcessInfo;
|
|
import android.content.Context;
|
|
import android.os.Process;
|
|
import android.text.TextUtils;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileReader;
|
|
import java.io.IOException;
|
|
import java.io.InputStreamReader;
|
|
import java.util.List;
|
|
|
|
public class ProcessUtils {
|
|
|
|
public static boolean isMainProcess( Context context ) {
|
|
try {
|
|
ActivityManager activityManager = ( ( ActivityManager ) context.getSystemService( Context.ACTIVITY_SERVICE ) );
|
|
if ( activityManager == null ) {
|
|
return false;
|
|
}
|
|
List< RunningAppProcessInfo > raps = activityManager.getRunningAppProcesses();
|
|
if ( raps == null || raps.size() <= 0 ) {
|
|
return false;
|
|
}
|
|
int pid = Process.myPid();
|
|
String packageName = context.getPackageName();
|
|
for ( RunningAppProcessInfo info : raps ) {
|
|
if ( packageName.equals( info.processName ) ) {
|
|
return pid == info.pid;
|
|
}
|
|
}
|
|
return false;
|
|
} catch ( Exception e ) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static String getPackageName() {
|
|
String packageName = null;
|
|
BufferedReader reader = null;
|
|
|
|
try {
|
|
reader = new BufferedReader( new InputStreamReader( new FileInputStream( "/proc/" + Process.myPid() + "/cmdline" ) ) );
|
|
packageName = reader.readLine().trim();
|
|
} catch ( Exception e ) {
|
|
e.printStackTrace();
|
|
packageName = String.valueOf( Process.myPid() );
|
|
} finally {
|
|
if ( reader != null ) try {
|
|
reader.close();
|
|
} catch ( IOException e ) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
return packageName;
|
|
}
|
|
|
|
/**
|
|
* 获取进程号对应的进程名
|
|
*
|
|
* @param pid 进程号
|
|
* @return 进程名
|
|
*/
|
|
public static String getProcessName( int pid ) {
|
|
BufferedReader reader = null;
|
|
try {
|
|
reader = new BufferedReader( new FileReader( "/proc/" + pid + "/cmdline" ) );
|
|
String processName = reader.readLine();
|
|
if ( !TextUtils.isEmpty( processName ) ) {
|
|
processName = processName.trim();
|
|
}
|
|
return processName;
|
|
} catch ( Throwable t ) {
|
|
t.printStackTrace();
|
|
} finally {
|
|
IOUtils.closeSilently( reader );
|
|
}
|
|
return null;
|
|
}
|
|
} |