Ejemplo n.º 1
0
Archivo: android.c Proyecto: CCQIU/CC
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("");
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
Archivo: android.c Proyecto: CCQIU/CC
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;
}
Ejemplo n.º 5
0
Archivo: android.c Proyecto: CCQIU/CC
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;
}
Ejemplo n.º 6
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("");
}