我是Android新手。我正在开发应用程序,必须获取有关当前正在前台运行的应用程序的信息。
这意味着如果用户启动任何应用程序,我的应用程序应该捕获已启动的应用程序信息,直到我的应用程序不应该中断已启动的应用程序。
示例:如果用户启动浏览器应用程序,我的应用程序应在日志上打印浏览器应用程序信息
我该怎么做?
答案 0 :(得分:21)
ActivityManager activity_manager = (ActivityManager) context
.getSystemService(Activity.ACTIVITY_SERVICE);
ActivityManager
有方法getRunningTasks(int)
。 ActivityManager
似乎是您正在寻找的解决方案。
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (int i = 0; i < recentTasks.size(); i++)
{
Log.d("Executed app", "Application executed : " +recentTasks.get(i).baseActivity.toShortString()+ "\t\t ID: "+recentTasks.get(i).id+"");
}
另外,看一下以下主题: See Android recent task executed by the user
答案 1 :(得分:8)
你可以使用类似的东西:
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (int i = 0; i < tasks.size(); i++) {
Log.d("Running task", "Running task: " + tasks.get(i).baseActivity.toShortString() + "\t\t ID: " + tasks.get(i).id);
}
答案 2 :(得分:0)
此代码将提供当前活动logcat
Process logcatProc;
List <String> progs = new ArrayList <String>();
progs.add("logcat");
progs.add("-v");
progs.add(mFormat.getValue());
if (mBuffer != Buffer.MAIN) {
progs.add("-b");
progs.add(mBuffer.getValue());
}
progs.add("*:" + mLevel);
logcatProc = Runtime.getRuntime()
.exec(progs.toArray(new String[0]));
mReader = new BufferedReader(new InputStreamReader(
logcatProc.getInputStream()), 1024);
String line;
while (mRunning && (line = mReader.readLine()) != null) {
if (!mRunning) {
break;
}
if (line.length() == 0) {
continue;
}
if (mIsFilterPattern) {
if (mFilterPattern != null && !mFilterPattern.matcher(line).find()) {
continue;
}
} else {
if (mFilter != null && !line.toLowerCase().contains(mFilter.toLowerCase())) {
continue;
}
}
synchronized (mLogCache) {
mLogCache.add(line);
}
}
答案 3 :(得分:0)
ActivityManager.getRunningTasks(int)
。您可以使用ActivityManager.RunningTaskInfo()
至少获取运行此活动的当前任务的任务信息(尽管API 29弃用了RunningTaskInfo()的某些字段,而不是整个方法)。
有关运行的TaskInfo()的更多信息,请参见Google's docs。