Android里获取正在前端运行的Activity的包名的方法
使用前提:
此方法只在 android5.0 以上有效。
AndroidManifest 中加入下面的权限,这个权限需要应用是系统级别的。
代码:
public static String getTopActivityPackageName(Context context) {
final int PROCESS_STATE_TOP = 2;
try {
//通过反射获取私有成员变量processState,稍后需要判断该变量的值
Field processStateField = ActivityManager.RunningAppProcessInfo.class.getDeclaredField(“processState”);
List<ActivityManager.RunningAppProcessInfo> processes = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo process : processes) {
//判断进程是否为前台进程
if (process.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
int state = processStateField.getInt(process);
//processState值为2
if (state == PROCESS_STATE_TOP) {
S