2023-01-20 242
我想在Android中的本机代码中调用C ++文件的Java方法.我知道,我们可以从JNI实现这一目标,但是在那种情况下,我需要启动Java的电话,这将不符合我的要求.
我需要调用从c ++中的main()函数中写入Java的方法.
因此,如果没有JNI?
,还有其他方法可以实现这一目标吗?
如果我可以使用JNI确切地实现这一目标,请让我知道如何?
预先感谢.
谢谢,
maulik
您是否检查了以下内容:
https://develiper.android.com.android.com/ndk/samples/samples/sampamples/sample_hellojhellojni.hllletldlety/a >
我基本上从那里学到了.
或:
1. https://github.com/sureshjoshi/sureshjoshi/android-ndroid-ndk-swig-swig-example/a>.
2. https://github.com/googlesamples/android-ndk .
一个简单的搜索会在所有这些地方吸引您.
编辑
现在,完成此操作后,它可以正常工作,接下来您可以从C/C ++致电:
在Android 中调用C ++的Java方法.这
应该为您提供帮助的片段是:
#include <string.h>
#include <jni.h>
//other imports
jstring get_package_MainActivity_getJniString( JNIEnv* env, jobject obj){
jstring jstr = (*env)->NewStringUTF(env, "MainActivity class");
jclass clazz = (*env)->FindClass(env, "com/org/android/ui/activities/MainActivity");
jmethodID mCurrentActivityId = (*env)->GetMethodID(env, clazz, "getCurrentActivityName", "(Ljava/lang/String;)Ljava/lang/String;");
jobject result = (*env)->CallObjectMethod(env, obj, mCurrentActivityId, jstr);
const char* str = (*env)->GetStringUTFChars(env,(jstring) result, NULL); // should be released but what a heck, it's a tutorial :)
printf("%s\n", str);
return (*env)->NewStringUTF(env, str);
}
为此,您可以使用服务器套接字创建Android服务.您可以创建正在实现客户端套接字的C ++应用程序.
C ++应用(客户端套接字) Android Service(Server套接字)
通过这种方式,您也可以从C ++应用程序和Android应用程序/服务实现请求/响应机制.
以上所述是小编给大家介绍的安卓系统中C++和Java之间的通信,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26117.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态