Es gibt nichts besonderes zu tun, es ist wie normale JNI-Mechanismus. Sie müssen einen Zeiger auf das Kontextobjekt abrufen, dann die Methoden-ID abrufen, die Sie aufrufen möchten, und sie dann mit den gewünschten Argumenten aufrufen.
Natürlich in Worten klingt es super einfach, aber im Code wird es wirklich chaotisch, da alle Schecks und JNI Anrufe.
Also meiner Meinung nach werde ich nicht versuchen, das Ganze aus nativem/JNI-Code zu implementieren, stattdessen werde ich eine Hilfsmethode in Java implementieren, die all das Zeug macht und nur die benötigten Daten zum Lesen/Schreiben der Präferenz empfängt.
Das wird Ihren nativen Code viel vereinfachen und die Pflege erleichtern.
zB:
//Somewhere inside a function in your native code
void Java_com_example_native_MainActivity_nativeFunction(JNIEnv* env, jobject thiz)
{
jclass cls = (*env)->FindClass(env,"PreferenceHelper");
if (cls == 0) printf("Sorry, I can't find the class");
jmethodID set_preference_method_id;
if(cls != NULL)
{
set_preference_method_id = (*env)->GetStaticMethodID(env, cls, "setPreference", "(Ljava/lang/String;Ljava/lang/StringV");
if(set_preference_method_id != NULL)
{
jstring preference_name = (*env)->NewStringUTF(env, "some_preference_name");
jstring value = (*env)->NewStringUTF(env, "value_for_preference");
(*env)->CallStaticVoidMethod(env, cls, get_main_id, preference_name, value);
}
}
}
Bitte beachte, dass ich nur den Code aus dem Speicher geschrieben, so erwarte nicht, aus dem Kasten heraus zu arbeiten.
Wie Lesen und Schreiben xml-Datei schreiben: http://xmlsoft.org/ – ognian
Während keine Erfahrung mit dem NDK hat, glaube ich nicht, dass Sie den Kontext zugreifen können. NDK-Entwicklung ist nur für zeitkritische, hohe Leistung und Low-Level-Dinge. Ich schlage vor, dass Sie die wichtigsten Konfigurationsdaten finden, die Sie benötigen, und schreiben Sie sie entweder in JSON oder XML aus und parsen Sie sie aus Ihrem NDK-Code. –
@cppdev Jetzt habe ich auch das gleiche Problem, wenn Sie dies implementiert haben, können Sie teilen –