【发布时间】:2015-10-21 00:45:05
【问题描述】:
我正在寻找一种在 Android Lollipop 中检索活动标题的方法。
我的意思不是进程名称,甚至不是应用程序的名称,而是活动打开时赋予它的标题。例如,当您在 Chrome 中导航到 http://www.google.com/ 时,标题从“Chrome”变为“Google”,当您点击最近的应用程序按钮时可以看到,我需要返回的内容“谷歌”这个词。
下面是我在循环当前正在运行的应用程序并试图找到该信息的糟糕尝试。
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
for (int i = 0; i < runningAppProcessInfo.size(); i++) {
PackageManager pm = context.getPackageManager();
ApplicationInfo info = null;
try {
info = pm.getApplicationInfo(runningAppProcessInfo.get(i).processName, 0);
Log.i("DEBUG_LABEL", "Process Name: " + runningAppProcessInfo.get(i).processName);
Log.i("DEBUG_LABEL", "App Label: " + pm.getApplicationLabel(info).toString());
if (info.className != null) {
Log.i("DEBUG_LABEL", "Info's package and class name: " + info.packageName + ", " + info.className);
ComponentName cName = new ComponentName(info.packageName, info.className);
ActivityInfo activityInfo = pm.getActivityInfo(cName, PackageManager.GET_META_DATA);
Log.i("DEBUG_LABEL", "Activity Label: " + activityInfo.loadLabel(pm));
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
【问题讨论】:
-
这是您的应用还是所有应用?
-
这应该适用于所有应用程序(理想情况下)
-
这并不过分帮助。链接中的第二种方法与我正在做的类似,所以我只是用
queryIntentActivities()尝试了第一种方法,当我得到活动时,调用loadLabel()只是给了我“Chrome”。我想要获得在最近的应用程序屏幕中显示的相同标题的可靠方法
标签: android android-package-managers android-applicationinfo