美文网首页JS脚本
使用JS前端体系实现安卓脚本应用(三)引入webview

使用JS前端体系实现安卓脚本应用(三)引入webview

作者: 魔力sama | 来源:发表于2019-05-28 21:05 被阅读0次

    AJ本身提供了UI来实现界面,不过我们既然要使用JS强大的前端体系,自然不会使用AJ的UI,通过webview引入html即可。
    经过反馈和测试,发现有些AJ版本不能正常跑webview,目前auto.pro可以正常跑的最新版本是7.0.4-0,且在低版本安卓下无法运行(经过排查,基本可以得出是auto未进行安卓API判断所导致,不过我也咩有解决办法)
    auto.js未做测试,也不是很建议使用(各种bug比较多)。
    先贴代码后解释。

    1. 我们在项目根目录下创建一个index.html,内容如下
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
    
        <h1 id="btn">hello, world</h1>
        
    </body>
    <script>
    document.getElementById('btn').onclick = function() {
        prompt('message', 'hello')
    }
    </script>
    </html>
    
    1. 将main.js修改成如下代码:
    "ui";
    
    importClass(android.webkit.WebView)
    importClass(android.webkit.WebChromeClient)
    importClass(android.webkit.WebResourceResponse)
    importClass(android.webkit.WebViewClient)
    
    ui.layout(
        <linear w="*" h="*">
            <webview id="webview" h="*" w="*" />
        </linear>
    )
    
    let webview = ui.webview
    let set = webview.getSettings()
    set.setAllowFileAccessFromFileURLs(false)
    set.setAllowUniversalAccessFromFileURLs(false)
    set.setSupportZoom(false)
    set.setJavaScriptEnabled(true)
    
    // 这里的lesson是开始时创建的文件夹名,请根据自己的情况修改
    webview.loadUrl('file:///storage/emulated/0/脚本/lesson/index.html')
    
    var webcc = new JavaAdapter(WebChromeClient, {
        onJsPrompt: function (webView, url, fnName, defaultValue, jsPromptResult) {
            toast(fnName + ' ' + defaultValue)
    
            // 这段代码是必要的,否则会弹出prompt,阻塞界面。
            jsPromptResult.confirm()
            return true
        }
    })
    webview.setWebChromeClient(webcc)
    
    1. 执行AJ命令,选择【保存项目到设备】,因为此例子中通过file协议来加载html,因此需要将项目先保存到模拟器设备中,否则会找不到该文件。
    2. 在模拟器的AJ里下拉刷新,运行项目后可以看到html页面,点击hello,world文字,可以看到弹出message hello的气泡信息。html与我们的安卓设备交互成功!

    原理

    webview可以监听到html中的一些事件,其中prompt是最适合传递数据的,因此这里选用它。这里重写了webview对prompt的响应,将其改为我们的自定义操作,以此来调用AJ的toast函数。

    html的成功引入,代表我们可以使用整套的前端体系,比如各种华丽的页面和特效库,比如react、vue、angular等前端框架,复杂的应用有了实现的可能。

    相关文章

      网友评论

        本文标题:使用JS前端体系实现安卓脚本应用(三)引入webview

        本文链接:https://www.haomeiwen.com/subject/izyjtctx.html