最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

android5.0之后,如何获取当前顶端包名

来源:懂视网 责编:小OO 时间:2024-11-29 07:31:38
文档

android5.0之后,如何获取当前顶端包名

Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)。intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)。startActivity(intent)。之后,获取UsageStatsManager实例并查询最近一天的应用使用记录。UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE)。long time = System.currentTimeMillis()。
推荐度:
导读Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)。intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)。startActivity(intent)。之后,获取UsageStatsManager实例并查询最近一天的应用使用记录。UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE)。long time = System.currentTimeMillis()。

在Android 5.0及之后的版本中,获取当前栈顶应用程序的包名需要通过UsageStatsManager服务。首先,打开应用使用权限设置界面,意图设置如下:

Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

之后,获取UsageStatsManager实例并查询最近一天的应用使用记录:

UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 10, time);

接下来,将这些应用使用记录按最后使用时间排序:

SortedMap mySortedMap = new TreeMap();
for (UsageStats usageStats : stats) {
mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}

若排序后的映射表不为空,则取出最后使用的应用程序包名:

if (mySortedMap != null && !mySortedMap.isEmpty()) {
topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
Log.e("TopPackage Name", topPackageName);
}

对于Android 5.0以下的版本,则可通过ActivityManager查询当前栈顶任务信息,获取包名如下:

else {
List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(1);
ActivityManager.RunningTaskInfo taskInfo = tasks.get(0);
topPackageName = taskInfo.topActivity.getPackageName();
}

以上方法可以有效获取当前栈顶应用程序的包名,适用于不同Android版本的设备。详情

文档

android5.0之后,如何获取当前顶端包名

Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)。intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)。startActivity(intent)。之后,获取UsageStatsManager实例并查询最近一天的应用使用记录。UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE)。long time = System.currentTimeMillis()。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top