char_t* CC_CALL cc_jni_get_clipboard_text() { SETUP_CLIPBOARD(cc_strdup("")); jmethodID mid = (*env)->GetMethodID(env, (*env)->GetObjectClass(env, clipboard), "getText", "()Ljava/lang/CharSequence;"); jobject sequence = (*env)->CallObjectMethod(env, clipboard, mid); (*env)->DeleteGlobalRef(env, clipboard); if (sequence) { mid = (*env)->GetMethodID(env, (*env)->GetObjectClass(env, sequence), "toString", "()Ljava/lang/String;"); jstring string = (jstring)((*env)->CallObjectMethod(env, sequence, mid)); const char* utf = (*env)->GetStringUTFChars(env, string, 0); if (utf) { char* text = cc_strdup(utf); (*env)->ReleaseStringUTFChars(env, string, utf); CLEANUP_CLIPBOARD(); return text; } } CLEANUP_CLIPBOARD(); return cc_strdup(""); }
extern "C" SDL_bool Android_JNI_HasClipboardText() { SETUP_CLIPBOARD(SDL_FALSE) jmethodID mid = env->GetMethodID(env->GetObjectClass(clipboard), "hasText", "()Z"); jboolean has = env->CallBooleanMethod(clipboard, mid); env->DeleteGlobalRef(clipboard); return has ? SDL_TRUE : SDL_FALSE; }
extern "C" int Android_JNI_SetClipboardText(const char* text) { SETUP_CLIPBOARD(-1) jmethodID mid = env->GetMethodID(env->GetObjectClass(clipboard), "setText", "(Ljava/lang/CharSequence;)V"); jstring string = env->NewStringUTF(text); env->CallVoidMethod(clipboard, mid, string); env->DeleteGlobalRef(clipboard); env->DeleteLocalRef(string); return 0; }
bool_t CC_CALL cc_jni_has_clipboard_text() { SETUP_CLIPBOARD(FALSE); jmethodID mid = (*env)->GetMethodID(env, (*env)->GetObjectClass(env, clipboard), "hasText", "()Z"); jboolean has = (*env)->CallBooleanMethod(env, clipboard, mid); (*env)->DeleteGlobalRef(env, clipboard); CLEANUP_CLIPBOARD(); return has ? TRUE : FALSE; }
int CC_CALL cc_jni_set_clipboard_text(const char* text) { SETUP_CLIPBOARD(-1) jmethodID mid = (*env)->GetMethodID(env, (*env)->GetObjectClass(env, clipboard), "setText", "(Ljava/lang/CharSequence;)V"); jstring string = (*env)->NewStringUTF(env, text); (*env)->CallVoidMethod(env, clipboard, mid, string); (*env)->DeleteGlobalRef(env, clipboard); (*env)->DeleteLocalRef(env, string); CLEANUP_CLIPBOARD(); return 0; }
extern "C" char* Android_JNI_GetClipboardText() { SETUP_CLIPBOARD(SDL_strdup("")) jmethodID mid = env->GetMethodID(env->GetObjectClass(clipboard), "getText", "()Ljava/lang/CharSequence;"); jobject sequence = env->CallObjectMethod(clipboard, mid); env->DeleteGlobalRef(clipboard); if (sequence) { mid = env->GetMethodID(env->GetObjectClass(sequence), "toString", "()Ljava/lang/String;"); jstring string = reinterpret_cast<jstring>(env->CallObjectMethod(sequence, mid)); const char* utf = env->GetStringUTFChars(string, 0); if (utf) { char* text = SDL_strdup(utf); env->ReleaseStringUTFChars(string, utf); return text; } } return SDL_strdup(""); }