Android 有没有什么方法能够得到所有正在后台运行的Activity。

Android 有没有什么方法能够得到所有正在后台运行的Activity。,第1张

 // 获得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的发送者、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9302875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存