Help us understand the problem. What is going on with this article?

Android Kotlin: Crosswalk WebView でNativeメソッド と JavaScript 相互呼び出し

More than 1 year has passed since last update.

Kotlin から Crosswalk の javascript の関数を呼び出す

javascript で下記の関数が定義されているとする。

関数foo は、ネイティブからJavaScript を呼び出したい例。
関数bar は、JavaScriptからネイティブのメソッドを呼び出したい例。

javascript
function foo(msg) {
    alert(msg);
    return msg + msg;
}

function bar() {
    alert(native.bar("A", "B"));
}

アクティビティのonCreateでCrosswalkにJavaScript呼び出しを担当するクラス(この例では JavaScriptBridge というクラス)を追加する。

MainActivity.kt
xwalkview.addJavascriptInterface(JavaScriptBridge(this, xwalkview), "native")

JavaScriptからの呼び出しを受け付けるクラスを作成する。

JavaScripBridge.kt
import android.content.Context
import android.net.ConnectivityManager
import org.xwalk.core.JavascriptInterface
import org.xwalk.core.XWalkView

class JavaScriptBridge(private val context: Context, private val web: XWalkView) {
    @JavascriptInterface
    fun bar(a: String, b: String): String {
        return a + b
    }
}

これで、JavaScript からは native オブジェクトを経由してネイティブ(JavaScriptBridgeクラス)を呼び出せるようになる。

JavaScript から Kotlin のメソッドを呼び出す

evaluateJavascript メソッドで呼び出したいJavaScriptコードを文字列で渡す。
JavaScript からの戻り値はコールバックで受け取ることができる。

xwalkview.evaluateJavascript("foo('android')") { value ->
    Log.d("RESULT", value)
}
jhelom
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした