ウマボーノ生活お役立ちアイテム

ローカルのhtmlからAndroidの関数を呼び出す kotlin

やること

htmlファイルにあるボタンを押下すると、Android側のメソッドを走らせる

呼び出す関数

connectOffline(){}

error_0.html [html側]

<!doctype html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>エラー画面</title>
    <meta name="description" content="エラー画面">

    <!-- style -->
    <link rel="stylesheet" href="destyle.css">
    <link rel="stylesheet" href="style.css">

</head>


<body class="error">
<div class="wrap">


    <!-- ====== header ====== -->
    <header class="header">
    </header>


    <!-- ====== main ====== -->
    <main class="main">


        <!-- ====== error ====== -->
        <section class="section--error">
            <h1 class="error--tit">通信に失敗しました。</h1>
        </section>


        <!-- ====== reload ====== -->
        <section class="section--reload">
            <button class="btn--reload" type="button" onclick="MyFunction()">再度読み込み
            </button>
            <script>
            function MyFunction() {
            alert("abcdefg");
            appJsInterface.connectOffline()
            }
            </script>
        </section>


    </main>


</div><!-- wrap -->
</body>
</html>

WebAppInterface.kt [連携用(どこに書いても良いよ)]

package com.example.bluetoothkotlindemo

import android.webkit.JavascriptInterface

class WebAppInterface {
    @JavascriptInterface
    fun connectOffline() {
        println("connectOffline")
        MainActivity().goBack()
    }
}

MainActivity.kt

true.also { webview.settings.javaScriptEnabled = it }
webview.addJavascriptInterface(WebAppInterface(), "appJsInterface")
//設置したhtmlファイルへのパス
web_view.loadUrl("file:///android_asset/error_0.html")
モバイルバージョンを終了