返回列表 发新帖

打开插件设置获取插件管理页面Activity对象代码

[复制链接]

22

主题

354

回帖

1462

积分

高中生

Rank: 4

金币
78
好评
4
信誉
98

MT论坛新人

发表于 2022-8-9 06:25:28 来自手机  | 显示全部楼层 | 阅读模式  来自 贵州
本帖最后由 ❝QWQ❞ 于 2022-8-9 06:33 编辑

代码(代码可能有问题,但我测试能用):

  1.         /**
  2.          * 获取Application
  3.          */
  4.         public static Application getApplication() {
  5.                 try {
  6.                         // 获取ActivityThread
  7.                         Class<?> activityThreadClass=Class.forName("android.app.ActivityThread");
  8.                         Method currentActivityThreadMethod=activityThreadClass.getDeclaredMethod("currentActivityThread");
  9.                         Object activityThreadObj=currentActivityThreadMethod.invoke(null);
  10.                         activityThreadClass = activityThreadObj.getClass();

  11.                         // 获取Application
  12.                         Method getApplicationMethod=activityThreadClass.getDeclaredMethod("getApplication");
  13.                         Application app=(Application)getApplicationMethod.invoke(activityThreadObj);
  14.                         return app;
  15.                 } catch (Exception e) {
  16.                         ExceptionHandler.onException(e);
  17.                         return null;
  18.                 }
  19.         }
  20.         /**
  21.          * 获取插件管理页面Activity对象
  22.          */
  23.         public static Activity getActivity() {
  24.         try {
  25.             Class<Application> applicationClass = Application.class;
  26.             Field mLoadedApkField = applicationClass.getDeclaredField("mLoadedApk");
  27.             mLoadedApkField.setAccessible(true);
  28.             Object mLoadedApk = mLoadedApkField.get(getApplication());
  29.             Class<?> mLoadedApkClass = mLoadedApk.getClass();
  30.             Field mActivityThreadField = mLoadedApkClass.getDeclaredField("mActivityThread");
  31.             mActivityThreadField.setAccessible(true);
  32.             Object mActivityThread = mActivityThreadField.get(mLoadedApk);
  33.             Class<?> mActivityThreadClass = mActivityThread.getClass();
  34.             Field mActivitiesField = mActivityThreadClass.getDeclaredField("mActivities");
  35.             mActivitiesField.setAccessible(true);
  36.             // ActivityThread.ActivityClientRecord
  37.             Object mActivities = mActivitiesField.get(mActivityThread);
  38.             // 注意这里一定写成Map,低版本这里用的是HashMap,高版本用的是ArrayMap
  39.             if (mActivities instanceof Map) {
  40.                 @SuppressWarnings("unchecked")
  41.                                         Map<Object, Object> arrayMap = (Map<Object, Object>) mActivities;
  42.                 for (Map.Entry<Object, Object> entry : arrayMap.entrySet()) {
  43.                     Object value = entry.getValue();
  44.                     Class<?> activityClientRecordClass = value.getClass();
  45.                     Field activityField = activityClientRecordClass.getDeclaredField("activity");
  46.                     activityField.setAccessible(true);

  47.                     Object activityObj = activityField.get(value);
  48.                                         String className=activityObj.getClass().getName();
  49.                                         if(!"bin.mt.plus.Main".equals(className)){
  50.                                                 return (Activity)activityObj;
  51.                                         }
  52.                                        
  53.                 }
  54.             }
  55.         } catch (Exception e) {
  56.                         // 异常
  57.         }
  58.                 return null;
  59.         }
复制代码
回复

使用道具 举报

22

主题

354

回帖

1462

积分

高中生

Rank: 4

金币
78
好评
4
信誉
98

MT论坛新人

发表于 2022-8-9 06:29:47 来自手机  | 显示全部楼层  来自 贵州
本帖最后由 ❝QWQ❞ 于 2022-8-9 06:32 编辑

要用这个Activity对象写弹窗等要先进行返回操作

  1. new Thread() {
  2.                         public void run() {
  3.                                 try {
  4.                                         backed = true;
  5.                                         Instrumentation inst= new Instrumentation();
  6.                                         inst.sendKeyDownUpSync(KeyEvent. KEYCODE_BACK);
  7.                                 } catch (Exception e) {
  8.                                         // 异常,比较容易触发
  9.                                 }
  10.                         }
  11.                 }.start();
复制代码
回复

使用道具 举报

12

主题

5474

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
495
好评
2
信誉
140

考神

发表于 2022-8-9 06:41:12 来自手机  | 显示全部楼层  来自 广东广州
感谢分享
回复

使用道具 举报

28

主题

3037

回帖

7725

积分

硕士生

Rank: 6Rank: 6

金币
2827
好评
12
信誉
316
发表于 2022-8-9 06:56:10 来自手机  | 显示全部楼层  来自 河北石家庄
感谢分享
回复

使用道具 举报

0

主题

4209

回帖

8077

积分

硕士生

Rank: 6Rank: 6

金币
572
好评
0
信誉
101

考神MT论坛新人MT论坛帅哥

发表于 2022-8-9 06:57:26 来自手机  | 显示全部楼层  来自 江苏
感谢分享
回复

使用道具 举报

174

主题

3482

回帖

9391

积分

硕士生

Rank: 6Rank: 6

金币
2518
好评
27
信誉
157

MT论坛新人MT论坛帅哥考神MT论坛最佳新人

发表于 2022-8-9 07:00:49 来自手机  | 显示全部楼层  来自 河南商丘
感谢大佬分享
回复

使用道具 举报

85

主题

3756

回帖

9493

积分

禁止发言

金币
1948
好评
111
信誉
70

考神MT论坛新人MT论坛帅哥MT论坛活跃会员MT论坛侠客

发表于 2022-8-9 08:12:33 来自手机  | 显示全部楼层  来自 山西太原
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

2

主题

1469

回帖

4320

积分

大学生

清闲

Rank: 5Rank: 5

金币
1858
好评
3
信誉
143

MT论坛最佳新人考神MT论坛新人

发表于 2022-8-9 08:30:33 来自手机  | 显示全部楼层  来自 江西赣州
感谢分享
回复

使用道具 举报

129

主题

3265

回帖

9340

积分

硕士生

嘻嘻●‿●

Rank: 6Rank: 6

金币
174
好评
142
信誉
117

考神MT论坛帅哥MT论坛最佳新人MT论坛活跃会员MT论坛侠客MT论坛新人

发表于 2022-8-9 09:58:44 来自手机  | 显示全部楼层  来自 广东汕头
过来看看
回复

使用道具 举报

74

主题

1404

回帖

1万

积分

版主

青涩

Rank: 7Rank: 7Rank: 7

金币
3557
好评
43
信誉
155

MT论坛最佳新人MT论坛帅哥MT论坛活跃会员考神MT论坛新人挂机大佬

发表于 2022-8-9 10:54:08 | 显示全部楼层  来自 广东珠海
弱势群众在线围观
回复

使用道具 举报

3

主题

1526

回帖

4347

积分

大学生

Rank: 5Rank: 5

金币
1978
好评
0
信誉
100
QQ
发表于 2022-8-10 10:07:39 来自手机  | 显示全部楼层  来自 安徽滁州
过来看看
回复

使用道具 举报

1

主题

81

回帖

268

积分

初中生

Rank: 3Rank: 3

金币
143
好评
0
信誉
100
发表于 2022-10-16 08:30:56 | 显示全部楼层  来自 陕西西安
感谢分享
回复

使用道具 举报

2

主题

789

回帖

2280

积分

大学生

Rank: 5Rank: 5

金币
725
好评
0
信誉
100
发表于 2022-10-20 11:05:58 来自手机  | 显示全部楼层  来自 湖南长沙
大佬有成品吗?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表