如何从 Android NDK C++ 代码中读取共享首选项?
How to read shared preferences from Android NDK C++ code?
我想直接从 C++ 代码中读取共享首选项。这可能吗?
有任何代码吗?谢谢
以下是我要转录成 C++ 的内容:
val sharedPref = applicationContext.getSharedPreferences("OF_IR", MODE_PRIVATE)
val paramFromPref = sharedPref.getString("parameter", "")
if (paramFromPref != "") {
}
您可以轻松地从 JNI 调用 Kotlin 函数。
这是 JNI 文档。
https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
您可以找到 FindClass、GetMethodId、CallVoidMethod 等方法
这是读取共享首选项的示例。
jclass jcContext = env->FindClass("android/content/Context");
jclass jcSharedPreferences = env->FindClass("android/content/SharedPreferences");
if(jcContext==nullptr || jcSharedPreferences== nullptr){
__android_log_print(ANDROID_LOG_DEBUG, "SharedPreferences","Cannot find classes");
}
jmGetString=env->GetMethodID(jcSharedPreferences,"getString","(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
jmethodID jmGetSharedPreferences=env->GetMethodID(jcContext,"getSharedPreferences","(Ljava/lang/String;I)Landroid/content/SharedPreferences;");
joSharedPreferences=env->CallObjectMethod(androidContext,jmGetSharedPreferences,env->NewStringUTF(name),MODE_PRIVATE);
我想直接从 C++ 代码中读取共享首选项。这可能吗?
有任何代码吗?谢谢
以下是我要转录成 C++ 的内容:
val sharedPref = applicationContext.getSharedPreferences("OF_IR", MODE_PRIVATE)
val paramFromPref = sharedPref.getString("parameter", "")
if (paramFromPref != "") {
}
您可以轻松地从 JNI 调用 Kotlin 函数。 这是 JNI 文档。
https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
您可以找到 FindClass、GetMethodId、CallVoidMethod 等方法
这是读取共享首选项的示例。
jclass jcContext = env->FindClass("android/content/Context");
jclass jcSharedPreferences = env->FindClass("android/content/SharedPreferences");
if(jcContext==nullptr || jcSharedPreferences== nullptr){
__android_log_print(ANDROID_LOG_DEBUG, "SharedPreferences","Cannot find classes");
}
jmGetString=env->GetMethodID(jcSharedPreferences,"getString","(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
jmethodID jmGetSharedPreferences=env->GetMethodID(jcContext,"getSharedPreferences","(Ljava/lang/String;I)Landroid/content/SharedPreferences;");
joSharedPreferences=env->CallObjectMethod(androidContext,jmGetSharedPreferences,env->NewStringUTF(name),MODE_PRIVATE);