我想获得在android中运行的所有任务。我在ActivityManager中找到了getRunningTasks但是从android-5.0中getRunningTasks可能没有给出所有任务(在我的情况下它会给出主屏幕和我的应用程序) )。
此外,是否可以找到用户当前正在与之交互的任务?
非常感谢任何帮助。
感谢。
修改:我正在使用以下代码。但是它只给了我一个进程(那是我的应用程序)。即使我打开其他应用程序&# 39;没有显示它们。我在One Plus2上运行它。
@Override
protected void onHandleIntent(Intent intent) {
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
getRunningApps();
}
}, 0, 1000);//put here time 1000 milliseconds=1 second
}
public void getRunningApps() {
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<ActivityManager.RunningAppProcessInfo> recentTasks = activityManager.getRunningAppProcesses();
for (int i = 0; i < recentTasks.size(); i++)
{
Log.d("Executed app", "Application executed : " +recentTasks.get(i).pkgList[0]+ "\t\t ID: "+recentTasks.get(i).pid+"");
}
}
答案 0 :(得分:3)
使用getRunningAppProcesses
,它将返回RunningAppProcessInfo
个对象列表,这些对象将为您提供有关每个正在运行的应用的一些数据。您可以检索到的有关该应用的信息之一是importance
,其值IMPORTANCE_FOREGROUND
表示该进程是当前活动的应用程序!
相关文档:
如果这对您有帮助,请随意按下左侧的箭头:)
答案 1 :(得分:1)
如果您不是该任务的所有者,则Android无法向您提供其信息。
答案 2 :(得分:-1)
我相信自{API}申请getRecentTasks和getRunningTask已被弃用。我不确定您要实现的目标,也许您应该尝试getRunningAppProcess。这会给你一个类似的结果。
答案 3 :(得分:-1)
使用此code
它适用于我。不要忘记在ListView
文件中使用Xml
。
ListView listView = (ListView) findViewById(R.id.listview);
ActivityManager actvityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();
String[] values = new String[procInfos.size()];
final String packageName = "my.application.package";
PackageManager packageManager = getApplicationContext().getPackageManager();
for (int i = 0; i < procInfos.size(); i++) {
values[i] = procInfos.get(i).processName;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
listView.setAdapter(adapter);