diff --git a/src/android/app/src/main/jni/android_common/android_common.cpp b/src/android/app/src/main/jni/android_common/android_common.cpp index b00d9a171..0fa028944 100644 --- a/src/android/app/src/main/jni/android_common/android_common.cpp +++ b/src/android/app/src/main/jni/android_common/android_common.cpp @@ -18,3 +18,7 @@ std::string GetJString(JNIEnv *env, jstring jstr) { env->ReleaseStringUTFChars(jstr, s); return result; } + +jstring ToJString(JNIEnv* env, const std::string& str) { + return env->NewStringUTF(str.c_str()); +} diff --git a/src/android/app/src/main/jni/android_common/android_common.h b/src/android/app/src/main/jni/android_common/android_common.h index 50b4c8d22..ff55bee75 100644 --- a/src/android/app/src/main/jni/android_common/android_common.h +++ b/src/android/app/src/main/jni/android_common/android_common.h @@ -9,3 +9,4 @@ #include std::string GetJString(JNIEnv* env, jstring jstr); +jstring ToJString(JNIEnv* env, const std::string& str); diff --git a/src/android/app/src/main/jni/applets/mii_selector.cpp b/src/android/app/src/main/jni/applets/mii_selector.cpp index 0e8e79238..2009a84ec 100644 --- a/src/android/app/src/main/jni/applets/mii_selector.cpp +++ b/src/android/app/src/main/jni/applets/mii_selector.cpp @@ -3,6 +3,7 @@ // Refer to the license.txt file included. #include "common/string_util.h" +#include "jni/android_common/android_common.h" #include "jni/applets/mii_selector.h" #include "jni/id_cache.h" @@ -26,7 +27,7 @@ void AndroidMiiSelector::Setup(const Frontend::MiiSelectorConfig& config) { static_cast(config.enable_cancel_button)); env->SetObjectField(java_config, env->GetFieldID(s_mii_selector_config_class, "title", "Ljava/lang/String;"), - env->NewStringUTF(config.title.c_str())); + ToJString(env, config.title)); env->SetLongField( java_config, env->GetFieldID(s_mii_selector_config_class, "initially_selected_mii_index", "J"), @@ -39,7 +40,7 @@ void AndroidMiiSelector::Setup(const Frontend::MiiSelectorConfig& config) { env->NewObjectArray(static_cast(miis.size()), string_class, nullptr); for (std::size_t i = 0; i < miis.size(); ++i) { const auto name = Common::UTF16BufferToUTF8(miis[i].mii_name); - env->SetObjectArrayElement(array, static_cast(i), env->NewStringUTF(name.c_str())); + env->SetObjectArrayElement(array, static_cast(i), ToJString(env, name)); } env->SetObjectField( java_config, diff --git a/src/android/app/src/main/jni/applets/swkbd.cpp b/src/android/app/src/main/jni/applets/swkbd.cpp index f5babae9d..e373c9e27 100644 --- a/src/android/app/src/main/jni/applets/swkbd.cpp +++ b/src/android/app/src/main/jni/applets/swkbd.cpp @@ -31,15 +31,15 @@ static jobject ToJavaKeyboardConfig(const Frontend::KeyboardConfig& config) { static_cast(config.multiline_mode)); env->SetObjectField(object, env->GetFieldID(s_keyboard_config_class, "hint_text", "Ljava/lang/String;"), - env->NewStringUTF(config.hint_text.c_str())); + ToJString(env, config.hint_text)); const jclass string_class = reinterpret_cast(env->FindClass("java/lang/String")); const jobjectArray array = env->NewObjectArray(static_cast(config.button_text.size()), string_class, - env->NewStringUTF(config.button_text[0].c_str())); + ToJString(env, config.button_text[0])); for (std::size_t i = 1; i < config.button_text.size(); ++i) { env->SetObjectArrayElement(array, static_cast(i), - env->NewStringUTF(config.button_text[i].c_str())); + ToJString(env, config.button_text[i])); } env->SetObjectField( object, env->GetFieldID(s_keyboard_config_class, "button_text", "[Ljava/lang/String;"), @@ -70,8 +70,7 @@ void AndroidKeyboard::Execute(const Frontend::KeyboardConfig& config) { void AndroidKeyboard::ShowError(const std::string& error) { JNIEnv* env = IDCache::GetEnvForThread(); - env->CallStaticVoidMethod(s_software_keyboard_class, s_swkbd_show_error, - env->NewStringUTF(error.c_str())); + env->CallStaticVoidMethod(s_software_keyboard_class, s_swkbd_show_error, ToJString(env, error)); } void InitJNI(JNIEnv* env) { diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index ecae76fe2..e876ecb3e 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -64,8 +64,8 @@ static bool DisplayAlertMessage(const char* caption, const char* text, bool yes_ // Execute the Java method. jboolean result = env->CallStaticBooleanMethod( - IDCache::GetNativeLibraryClass(), IDCache::GetDisplayAlertMsg(), env->NewStringUTF(caption), - env->NewStringUTF(text), yes_no ? JNI_TRUE : JNI_FALSE); + IDCache::GetNativeLibraryClass(), IDCache::GetDisplayAlertMsg(), ToJString(env, caption), + ToJString(env, text), yes_no ? JNI_TRUE : JNI_FALSE); return result != JNI_FALSE; } @@ -74,8 +74,8 @@ static std::string DisplayAlertPrompt(const char* caption, const char* text, int JNIEnv* env = IDCache::GetEnvForThread(); jstring value = reinterpret_cast(env->CallStaticObjectMethod( - IDCache::GetNativeLibraryClass(), IDCache::GetDisplayAlertPrompt(), - env->NewStringUTF(caption), env->NewStringUTF(text), buttonConfig)); + IDCache::GetNativeLibraryClass(), IDCache::GetDisplayAlertPrompt(), ToJString(env, caption), + ToJString(env, text), buttonConfig)); return GetJString(env, value); }