我的java代码中有一个int a=20
public int a = 20 ;
然后我宣布ndk&我的项目中的java本机接口witch可以更改int a=20的值到a=100,意味着我的本地代码将int a=20更改为100;
static {
System.loadLibrary("native-lib");
}
public static native void myfunction (MyChangeActivity mclass);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_change);
myfunction(this);
这是编写的c++代码id
JNIEXPORT void JNICALL
Java_org_lotka_ndk_1hello_1world_MyChangeActivity_myfunction(
JNIEnv *env ,
jclass cls,
jobject obj){
jclass myjclass = env->GetObjectClass(obj);
jfieldID myjfield = env->GetFieldID(myjclass, "a", "I") ;
env->SetIntField(obj, myjfield, 100);
}
完成
我有一个整数,它的值是20
int a = 20
但在jni之后,a部分将增加到100
现在我的问题是如何使用String
我想在开始时用这个
String b = "website.com"
并将其更改为
String b = "google.com"
我想要ndk的所有内容,并遵循我在顶部为int声明的方法但现在我想要我的代码的字符串版本:(
tnks alot
原理相同。获取字段ID,然后使用Set*Field
修改字段。
字段的签名现在是Ljava/lang/String;
而不是I
。您需要使用SetObjectField
而不是SetIntField
。
除非你已经有了一个包含所需内容的jstring
,否则你必须用NewString
或NewStringUTF
创建一个。