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;
}
本文介绍在Android 5.0及之前的版本中如何通过系统服务获取当前最前端Activity的名字及其所在的应用包名,并提供了针对不同Android版本的代码示例。

被折叠的 条评论
为什么被折叠?



