返回列表 发新帖

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

[复制链接]

32

主题

462

回帖

1908

积分

高中生

Rank: 4

金币
72
好评
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.         }
复制代码
回复

使用道具 举报

32

主题

462

回帖

1908

积分

高中生

Rank: 4

金币
72
好评
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();
复制代码
回复

使用道具 举报

18

主题

9035

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4987
好评
3
信誉
202

考神

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

使用道具 举报

37

主题

5757

回帖

1万

积分

博士生

欣冉吖

Rank: 7Rank: 7Rank: 7

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

使用道具 举报

0

主题

6563

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
6322
好评
0
信誉
108

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

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

使用道具 举报

175

主题

8898

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
7516
好评
29
信誉
166

MT论坛新人MT论坛帅哥考神MT论坛最佳新人MT论坛灌水老大MT论坛活跃会员

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

使用道具 举报

84

主题

3693

回帖

9398

积分

禁止发言

金币
1951
好评
111
信誉
70

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

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

使用道具 举报

5

主题

4493

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
8388
好评
10
信誉
195

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

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

使用道具 举报

165

主题

5751

回帖

1万

积分

博士生

嘻嘻●‿●

Rank: 7Rank: 7Rank: 7

金币
228
好评
167
信誉
105

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

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

使用道具 举报

79

主题

1536

回帖

1万

积分

版主

Rank: 7Rank: 7Rank: 7

金币
3151
好评
48
信誉
155

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

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

使用道具 举报

3

主题

5339

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

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

使用道具 举报

1

主题

80

回帖

268

积分

初中生

Rank: 3Rank: 3

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

使用道具 举报

23

主题

2779

回帖

8547

积分

硕士生

诸天气荡荡,我道日新隆。

Rank: 6Rank: 6

金币
4369
好评
14
信誉
100

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

发表于 2022-10-20 11:05:58 来自手机  | 显示全部楼层  来自 湖南
大佬有成品吗?
回复

使用道具 举报

发表回复

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

本版积分规则

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