android获取topactivity
时间: 2023-12-15 20:07:34 浏览: 25
要获取当前处于前台的 Activity,可以使用 ActivityManager 和 UsageStatsManager 两种方式。
ActivityManager 方式:
```
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
ComponentName componentName = activityManager.getRunningTasks(1).get(0).topActivity;
String topActivityName = componentName.getClassName();
```
UsageStatsManager 方式:
```
long endTime = System.currentTimeMillis();
long beginTime = endTime - 1000 * 60;
UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
List<UsageStats> usageStatsList = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, beginTime, endTime);
if (usageStatsList != null && usageStatsList.size() > 0) {
UsageStats usageStats = usageStatsList.get(0);
String topActivityName = usageStats.getPackageName();
}
```
两种方式各有优缺点,需要根据具体情况选择使用。需要注意的是,从 Android 5.0 开始,系统对获取应用使用状态的权限进行了限制,需要用户授权才能使用 UsageStatsManager 方式获取前台 Activity。