我慢してください、私はiPhone開発者であり、このAndroid全体が私を少し混乱させます。
cocos2d-xCCMenuItemから呼び出されるc++メソッドがいくつかあります。したがって、ドキュメントによると、パラメータを送信することはできません。
AndroidブラウザでURLを開く必要があります。これにより、新しいインテントを開始するためにJAVA関数を呼び出す必要があります。
VMを作成する必要があることは理解していますが、次のコードでエラーが発生します。
jni /../../ Classes / OptionsScene.cpp:184:エラー:「JNI_CreateJavaVM」はこのスコープで宣言されていません
私はこのスレッドを見ていました:Androidのc++からjavaメソッドを呼び出す
しかし、彼はパラメーターを使用しており、私にはそれができません。そして、私はそれらを自分で作るために彼のコードのどこにあるのかわかりません。
'FindClass'メソッドの文字列がどうあるべきかわかりません。また、呼び出す必要のあるすべてのメソッドで新しい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);
}
}
正直なところ、私はこれに苦労しています、どんな助けでもありがたいです。ありがとう。