动态链接库反射java层_反射调用Java层方法

在底层C代码中反射获取Java层字段的值的基础上,我们继续学习反射调用Java层方法,进一步完善登录功能。

一:在LoginActivity中定义两个方法

打开eclipse工具,找到上节课创建好的“yijindaxue”工程,在工程中依次找到“src”=>“com.yijindaxue”目录下“LoginActivity.java”文件,双击打开该文件。

在该文件中添加两个方法,如下图所示:

第一个方法:userError用于提示用户输入的账号错误。

第二个方法:pwdError用于提示用户输入的密码错误。

eb3899311595a014f801420e9a47a91c.png

二:编写C代码

1.在“yijindaxue”工程中找到“jni”目录下的“yijindaxue.c”文件,双击打开该文件。

2.在“yijindaxue.c”文件中找到Java_com_yijindaxue_LoginActivity _login函数,完善该函数的登录功能,如下图所示:

(1)调用strcmp函数来比较用户输入的账号是否正确,如果不正确则通过反射调用Java层的成员方(userError),提示用户输入的账号错误。

第一步:调用GetMethodID函数获取Java层成员方法的ID。

第二步:使用CallVoidMethod函数调用Java层成员方法。

(2)调用strcmp函数来比较用户输入的密码是否正确,如果不正确则通过反射调用Java层的静态方(pwdError),提示用户输入的密码错误。

第一步:调用GetStaticMethodID函数获取Java层静态方法的ID。

第二步:使用CallStaticVoidMethod函数调用Java层静态方法。

bafa26802e549707eae0ae9cd2448d51.png

三: 编译动态链接库

在“yijindaxue”工程下选中jni目录右键选择最后一项properties,点击该选项弹出弹窗,复制Location对应的值,就是文件路径D:\Android\data \yijindaxue\jni,复制成功后关闭对话框,如下图所示:

41b46954a8c0acb7827538a667bc2aaf.png

点击左下角“windows”图标,输入“cmd”命令打开窗口,输入“D:”切换到D盘,然后执行命令“cd D:\Android\data\yijindaxue\jni”进入jni目录,紧接着执行“ndk-build”命令生成动态链接库“.so”文件,如下图所示:

fd665f55a49bb0d627e0420a5d4e8cf3.png

四:运行应用程序

打开雷电模拟器运行应用程序:选中“yijindaxue”工程=>右键选择Run As选项=> 点击Android Application。

小结:

主要学习了反射调用Java层方法,完善登录功能,步骤如下:

1、在LoginActivity中定义userError和pwdError两个方法,用于提示用户输入的账号和密码是否正确。

2、编写C代码,反射调用Java层方法。

(1)反射调用成员方法。

第一步:调用GetMethodID函数获取Java层成员方法的ID。

第二步:使用CallVoidMethod函数调用Java层成员方法。

(2)反射调用静态方法。

第一步:调用GetStaticMethodID函数获取Java层静态方法的ID。

第二步:使用CallStaticVoidMethod函数调用Java层静态方法。

3、使用NDK工具编译.c文件生成动态链接库.so文件。

4、运行应用程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值