// 获得PackageManager对象
PackageManager pm = contextgetPackageManager();
ActivityManager am = (ActivityManager) context
getSystemService(ContextACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = amgetRunningTasks(100);
if (!tasksisEmpty()) {
ComponentName topActivity = tasksget(0)topActivity;
for (RunningTaskInfo info : tasks) {
// 查询这个后台任务的 启动Activity
Intent mainIntent = new Intent(IntentACTION_MAIN);
mainIntentsetPackage(topActivitygetPackageName());
mainIntentaddCategory(IntentCATEGORY_LAUNCHER);
// 通过查询,获得所有ResolveInfo对象
List<ResolveInfo> resolveInfos = pmqueryIntentActivities(
mainIntent, PackageManagerMATCH_DEFAULT_ONLY);
ResolveInfo reInfo = resolveInfosget(0);
// 获得该应用程序的启动Activity的name
String activityName = reInfoactivityInfoname;
// 获得应用程序的包名
String pkgName = reInfoactivityInfopackageName;
// 获得应用程序的Label
String appLabel = (String) reInfoloadLabel(pm);
Drawable icon = reInfoloadIcon(pm); // 获得应用程序图标
// 为应用程序的启动Activity 准备Intent
Intent launchIntent = new Intent();
launchIntentsetComponent(new ComponentName(pkgName,
activityName));
}
}
broadcast发送的时候都是传递一个intent对象,这个intent对象就是传给onReceive方法的那个intent通过这个intent就可以获取发送广播的程序的包名,知道了包名就知道是哪个程序了。
ComponentName com = intentgetComponent();
String pkgName = comgetPackageName();
试试看行不行。。。
以上就是关于Android 有没有什么方法能够得到所有正在后台运行的Activity。全部的内容,包括:Android 有没有什么方法能够得到所有正在后台运行的Activity。、android 获取broadcast的发送者、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)