android 获取栈顶应用包名
时间: 2023-10-01 22:10:21 浏览: 42
你可以通过使用 ActivityManager 获取栈顶应用的包名,以下是获取栈顶应用包名的示例代码:
```java
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
String packageName = activityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
```
需要注意的是,从 Android 5.0 开始,Google 将获取栈顶应用的 API 设置为了废弃状态,因此上述代码在 Android 5.0 及以上版本的设备上可能会出现警告。你可以使用以下代码来解决这个问题:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List<UsageStats> usageStatsList = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 10, time);
if (usageStatsList != null && usageStatsList.size() > 0) {
UsageStats usageStats = usageStatsList.get(0);
packageName = usageStats.getPackageName();
}
} else {
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
packageName = activityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
}
```
这段代码首先判断设备的 Android 版本是否大于等于 5.0,如果是,则使用 UsageStatsManager 获取栈顶应用包名,否则使用 ActivityManager 获取栈顶应用包名。需要注意的是,使用 UsageStatsManager 需要用户授权。