Нет ничего особенного, что вам нужно сделать, это как обычный механизм JNI. Вам нужно получить указатель на объект контекста, затем получить идентификатор метода, который вы хотите вызвать, а затем вызвать его с помощью требуемых аргументов.
Конечно, на словах это звучит очень просто, но в коде он становится очень грязным, поскольку все проверки и вызовы JNI.
Так что, на мой взгляд, я не буду пытаться реализовать все это из собственного/JNI-кода, вместо этого я реализую вспомогательный метод в Java, который делает все это, и просто получает необходимые данные для чтения/записи предпочтений.
Это упростит ваш собственный код и упростит его поддержку.
например:
//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);
}
}
}
Обратите внимание, что я просто написал код из памяти, поэтому ожидать, чтобы не работать из коробки.
Как читать и писать файл XML: http://xmlsoft.org/ – ognian 2010-12-15 12:35:34
Пока не имея опыта работы с NDK, я не думаю, что вы можете получить доступ к контексту. Разработка NDK предназначена только для критически важных, высокопроизводительных и низкоуровневых вещей. Я предлагаю вам найти наиболее важные данные конфигурации, которые вам нужны, и записать их в JSON или XML и проанализировать их из вашего кода NDK. – 2010-12-15 14:00:17
@cppdev теперь я тоже сталкиваюсь с этой же проблемой, если вы это сделали, можете ли вы делиться – 2013-05-22 11:54:27