Call Native Functions

Π’Ρ‹Π·ΠΎΠ² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

From C++

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΠ· cpp:

@JvmStatic
fun getSSLCertificatesFile(context: Context): String? {...}

Π‘Π°ΠΌ Π²Ρ‹Π·ΠΎΠ²:

QAndroidJniObject certificate_path = QAndroidJniObject::callStaticObjectMethod(
        "SSLCertificateProvider",
        "getSSLCertificatesFile",
        "(Landroid/content/Context;)Ljava/lang/String;",
        androidContext.object()
);

From Kotlin

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΠ· kotlin:

extern "C" JNIEXPORT jstring JNICALL Java_ru_example_curl_MainActivity_stringFromJNI(JNIEnv * env, jobject)
{
    const auto s = to_utf16(get_string());
    return env->NewString(reinterpret_cast<const jchar *>(s.c_str()), s.length());
}

Π’ Kotlin объявлСниС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ, Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ stringFromJNI ΠΈΠ· kotlin:

class Test {

    external fun stringFromJNI(): String

    companion object {
        init {
            System.loadLibrary("native-lib")
        }
    }
}

Last updated