首页
社区
课程
招聘
[未解决,已结帖] [求助]求助,将一个安卓函数转换为一个jni函数(已经自己完成) 50.00雪花
发表于: 2023-3-8 17:55 3632

[未解决,已结帖] [求助]求助,将一个安卓函数转换为一个jni函数(已经自己完成) 50.00雪花

2023-3-8 17:55
3632

安卓jni,需要将下面这个函数转换成jni函数。需要在按钮点击后能够正常获取到当前界面的activity.函数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static Activity getActivity() {                       
try {
        Class  activityThreadClass = Class.forName("android.app.ActivityThread");
        Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
        Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
        activitiesField.setAccessible(true);
        Map activities = (Map) activitiesField.get(activityThread);
        for (Object activityRecord : activities.values()) {
            Class activityRecordClass = activityRecord.getClass();
            Field pausedField = activityRecordClass.getDeclaredField("paused");
            pausedField.setAccessible(true);
            if (!pausedField.getBoolean(activityRecord)) {
                Field activityField = activityRecordClass.getDeclaredField("activity");
                activityField.setAccessible(true);
                Activity activity = (Activity) activityField.get(activityRecord);
                return activity;
            }
        }
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    }
    return null;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2023-3-14 10:59 被mb_tcheuwvg编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
因为目前在java层测试没有问题,只需转换到native层能正常运行即可
2023-3-8 17:58
0
游客
登录 | 注册 方可回帖
返回
//