Android获取所有Activity
1 方式一
public void getAllActivity() {PackageManager packageManager = getPackageManager();PackageInfo packageInfo = null;try {packageInfo = packageManager.getPackageInfo(getPackageName(), PackageManager.GET_ACTIVITIES);//所有的Activity ActivityInfo[] activities = packageInfo.activities;for (ActivityInfo activity :activities ) {Class<?> aClass = Class.forName(activity.name);}} catch (PackageManager.NameNotFoundException | ClassNotFoundException e) {e.printStackTrace();}}
2 方式二 反射
private static List<Activity> getActivitiesByApplication(Application application) {List<Activity> list = new ArrayList<>();try {Class<Application> applicationClass = Application.class;Field mLoadedApkField = applicationClass.getDeclaredField("mLoadedApk");mLoadedApkField.setAccessible(true);Object mLoadedApk = mLoadedApkField.get(application);Class<?> mLoadedApkClass = mLoadedApk.getClass();Field mActivityThreadField = mLoadedApkClass.getDeclaredField("mActivityThread");mActivityThreadField.setAccessible(true);Object mActivityThread = mActivityThreadField.get(mLoadedApk);Class<?> mActivityThreadClass = mActivityThread.getClass();Field mActivitiesField = mActivityThreadClass.getDeclaredField("mActivities");mActivitiesField.setAccessible(true);Object mActivities = mActivitiesField.get(mActivityThread);// 注意这里一定写成Map,低版本这里用的是HashMap,高版本用的是ArrayMapif (mActivities instanceof Map) {@SuppressWarnings("unchecked")Map<Object, Object> arrayMap = (Map<Object, Object>) mActivities;for (Map.Entry<Object, Object> entry : arrayMap.entrySet()) {Object value = entry.getValue();Class<?> activityClientRecordClass = value.getClass();Field activityField = activityClientRecordClass.getDeclaredField("activity");activityField.setAccessible(true);Object o = activityField.get(value);list.add((Activity) o);}}} catch (Exception e) {e.printStackTrace();list = null;}return list;}
3 获取栈顶 Activity
//获取栈顶Activity及其所属进程public static String getTopActivityNameAndProcessName(Context context) {String processName = null;String topActivityName = null;ActivityManager activityManager =(ActivityManager) (context.getSystemService(android.content.Context.ACTIVITY_SERVICE));List<ActivityManager.RunningTaskInfo> runningTaskInfos = activityManager.getRunningTasks(1);if (runningTaskInfos != null) {ActivityManager.RunningTaskInfo runningTaskInfo = runningTaskInfos.get(0);ComponentName f = runningTaskInfo.topActivity;String topActivityClassName = f.getClassName();String temp[] = topActivityClassName.split("\\.");//栈顶Activity的名称topActivityName = temp[temp.length - 1];int index = topActivityClassName.lastIndexOf(".");//栈顶Activity所属进程的名称processName = topActivityClassName.substring(0, index);System.out.println("---->topActivityName=" + topActivityName + ",processName=" + processName);}return topActivityName;}
Android获取所有Activity相关推荐
- android获取当前activity view,Android中如何通过View获取Activity
在开发过程中,我们会遇到下面情况: Button button = (Button) findViewById(R.id.btn); button.setOnClickListener(MainAct ...
- Android多个权限多次请求,android – 获取W / Activity:一次只能请求一组权限
我制作了一个应用程序,它有摄像头和GPS的请求,但是当我执行时,我会多次收到此警告,而不到1秒. W/Activity: Can reqeust only one set of permissions ...
- android 获取多个控件,Android----获取activity上所有的控件
/** * @note 获取该activity所有view * @author liuh * */ public List getAllChildViews() { View view = this. ...
- android获取activity截图,Android Activity 不能被截屏的解决方法
Android Activity 不能被截屏的解决方法 在Activity 添加即可 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECU ...
- android屏幕密度高度,Android获取常用辅助方法(获取屏幕高度、宽度、密度、通知栏高度、截图)...
我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就分享一下Android中常用的一些辅助方法: 获取屏幕高度: /** * 获得屏幕高度 * @para ...
- android获取手机通讯录
在android中读取联系人信息的程序,包括读取联系人姓名.手机号码和邮箱 (转载自博客:http://www.cnblogs.com/error404/archive/2013/03/12/2956 ...
- Android四种Activity的加载模式(转)
建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型: http://www.cnblogs.com/ghj1976/archive/2011/0 ...
- android 获取短信验证码倒计时
android 获取短信验证码倒计时 public class MainActivity extends Activity { private Button submit; privat ...
- android获取连接wifi名称,android 获取当前连接WIFI名称的有关问题
android 获取当前连接WIFI名称的问题 我在程序内通过以下方法获取当前连接的WIFI名称(SSID),这个也是网上找别人的,但在我程序内就获取不到呢? 1.在AndroidManifest.x ...
最新文章
- Chain of Responsibility 责任链模式 MD
- 【数学 技巧】2.14计数
- 【直播资料下载】Python第五讲——关于爬虫如何做js逆向的思路
- 统计学习方法笔记(七)-线性支持向量机原理及python实现
- 工作流笔记第一天_简单介绍activiti
- RedHat6.2 x86手动配置LNMP环境
- C#LeetCode刷题之#643-子数组最大平均数 I( Maximum Average Subarray I)
- (五)流比特币价格的AI预测和异常检测
- php session 设置无效
- 广播BroadcastReceiver(2)
- FL Studio20.8.2(水果win10)中文版主要软件更新内容
- Android项目之电话黑名单
- 淘宝网卖家必须缴纳消保保证金才能发布宝贝的商品类目
- oracle查询存储过程完整的sql,SQL命令查询Oracle存储过程信息(代码内容等)
- 三菱FX5U多冲一切追剪程序。 无需40SSC运动模块,通过软件电子凸轮算法实现追剪功能
- concurrent mode failure
- Chainlink官方文档翻译(二) 中间件-随机数 Intermediates - Random Numbers)
- LDAP、OLAP、OLTP详细介绍
- 曙光服务器如何重新设置u盘启动_在中科曙光I620-G20服务器上安装Windows 2008 R2 系统步骤...
- 合伙人制度是梦想、价值观和利益的捆绑
热门文章
- 从Kaggle HuBMAP 比赛中学习语义分割
- CVPR 2020 论文大盘点-超分辨率篇
- 学术人必备!懒人制作学术会议Oral/Spotlight Video指南
- 强化学习常用算法+实际应用
- Mask R-CNN抢车位,快人一步!
- 零基础快速入门python教程,结合新手练习的5大项目
- 前排!零基础小白学习3D建模的必经之路
- linux io函数,unix/Linux低级IO函数的用法有哪些? 爱问知识人
- 收藏 | 在算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?...
- PyTorch | torch.from_numpy使用方法 | torch.from_numpy如何使用?torch.from_numpy()例子 | 通过torch.from_numpy创建张量