[英]Sending String to C++ from Android app using JNI
我正在嘗試使用JNI發送從Android App中的最終用戶獲得的動態String。 盡管在互聯網上搜索了類似的示例后,像新手一樣,對我來說,解決起來卻相當復雜。
我在下面的每個文件共享我的代碼。
MainActivity.java
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("native-lib");
}
public native int initialize();
// i want to send params like String from android App in the below method , what is the proper way to do it.
// public native int sendData(String param1 , String param2);
}
本機lib.cpp
#include "jni.h"
extern "C"
JNIEXPORT jint JNICALL
Java_com_newapp_myapp_MainActivity_initialize(JNIEnv *env, jobject instance){
activity = env->NewGlobalRef(instance);
return my_initialize(my_jvm, activity);
}
main.h
#ifdef __cplusplus
extern "C" {
#endif
#ifndef MAIN_H
#define MAIN_H
#include "jni.h"
int my_initialize(_JavaVM*, jobject);
#endif
#ifdef __cplusplus
}
#endif
我的問題是,如何從Android向C ++發送方法中的String參數。 例如,在MainActivity中實現sendData()方法,JNI文件的等效代碼與C ++文件的等效代碼相同。
注意:代碼非常龐大,這就是為什么我共享了代碼段的原因。 該代碼正常工作。
假設您的文件是:
public class AppCompatActivity {
}
和
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("native-lib");
}
public native int sendData(String param1 , String param2);
}
您需要做的所有事情如下:
> javac -h . MainActivity.java
> cat MainActivity.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class MainActivity */
#ifndef _Included_MainActivity
#define _Included_MainActivity
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: MainActivity
* Method: sendData
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_MainActivity_sendData
(JNIEnv *, jobject, jstring, jstring);
#ifdef __cplusplus
}
#endif
#endif
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.