android5.0之前,获取任务栈最顶端的activity名
public String getTopActivity(){
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
/** 获取当前正在运行的任务栈列表, 越是靠近当前运行的任务栈会被排在第一位,之后的以此类推 */
List<RunningTaskInfo> runningTasks = manager.getRunningTasks(1);
/** 获得当前最顶端的任务栈,即前台任务栈 */
RunningTaskInfo runningTaskInfo = runningTasks.get(0);
/** 获取前台任务栈的最顶端 Activity */
String topActivity = runningTaskInfo.topActivity.toString();
return topActivity;
}
android5.0之前,获取当前应用包名
public String getTopPackage(){
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
/** 获取当前正在运行的任务栈列表, 越是靠近当前运行的任务栈会被排在第一位,之后的以此类推 */
List<RunningTaskInfo> runningTasks = manager.getRunningTasks(1);
/** 获得当前最顶端的任务栈,即前台任务栈 */
RunningTaskInfo runningTaskInfo = runningTasks.get(0);
/** 获取前台任务栈的最顶端 Activity的包名 */
String packageName = runningTaskInfo.topActivity.getPackageName();
return packageName;
}
android5.0之后,当前activity已经无法获取,系统没有暴露相关的API,或许可以通过反射,但我还不知如何实现,获取当前应用的包名可以通过如下方法
public String getTopPackageName(){
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
String processName = manager.getRunningAppProcesses().get(0).processName;
return processName;
}