2023-01-20 301
请忍受我,我是iPhone开发人员,整个Android这让我有些困惑.
i有一些C ++方法,这些方法是从Cocos2D-X CCmenuitem调用的.因此,根据文档,我无法发送任何参数.
我需要使用Android浏览器打开一个URL,这需要我调用Java功能以启动新意图.
我知道我需要创建一个VM,但是以下代码给了我错误:
jni/../../class/optionsscene.cpp:184:错误:’jni_createjavavm’as
在此范围中未声明
我正在看这个线程:从C ++调用Java方法在Android
但他使用参数,我做不到.而且我看不出他的代码中的那些东西只是让它们自己制作.
我不知道”查找类”方法中应该是什么字符串.
另外,我认为在我需要调用的每种方法中创建一个新的VM实例非常可怕.我将如何创建一个单身人士,以全面使用?
这是我的菜单项调用的C ++代码:
#include <jni.h>
...
JavaVM *vm; // Global
...
void OptionsScene::website(){
JNIEnv *env;
JavaVMInitArgs vm_args;
vm_args.version = JNI_VERSION_1_2;
vm_args.nOptions = 0;
vm_args.ignoreUnrecognized = 1;
jint result = JNI_CreateJavaVM(&vm, (void **)&env, &vm_args); // This line still errors
jclass clazz = env->FindClass("com/prndl/project/WebExecute");
jmethodID method = env->GetMethodID(clazz, "website", "(Ljava/lang/String;)V");
env->CallVoidMethod(NULL,method);
vm->DestroyJavaVM();
这是我需要调用的Java方法:
public class WebExecute extends Activity{
public void website(){
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
}
}
老实说,我为此苦苦挣扎,任何帮助都将受到赞赏.谢谢.
许多事情…
一个非常有用的资源是 jni book p>
但是,在阅读时要小心,因为某些示例在C中,有些示例在C ++中,因此请确保您了解呼叫约定的不同.
如果您正在查看如何调用不接受任何参数的Java方法,则格式为jmethodID mid = env->GetStaticMethodID(myClass, “myMethod”, “()V”);
()是您告诉它不接受任何参数的方式.
V说它返回了无效. Ljava/lang/String;如果该方法返回类型String的对象.
以上所述是小编给大家介绍的使用JNI调用C ++的Java方法,没有参数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26041.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日
扫码二维码
获取最新动态