Android WeBview调用JavaScript函数

时间:2017-05-16 16:02:33

标签: javascript android web webview

我使用WebView来显示这个网站 http://app.wlojii.com

我想在通知栏中设置控制面板来播放/停止音乐。

问题我无法找到播放/停止音乐的功能。

我检查了button元素并尝试了一些函数变体(play,play(),player.play()),我用这个方法来调用函数:

  

mWebView.loadUrl(“javascript:...”)

我对JavaScript和网络不太熟悉,我需要一些帮助。

3 个答案:

答案 0 :(得分:2)

的Pavel 我添加了一个git repo,其中包含工作代码https://github.com/premithk/webviewclickeventexample 上次问题是getElementsByClassName返回一个数组。所以我已将代码更改为

mWebview.loadUrl("javascript(function({l=document.getElementsByClassName('mejs-playpause-button');
e=document.createEvent('HTMLEvents');
e.initEvent('click',true,true);
l[0].dispatchEvent(e);})()");

repo中的代码以任何方式工作,以便有一个按钮(本机)作为播放/暂停

答案 1 :(得分:1)

注册Javascript接口或使用此库。 https://github.com/lzyzsd/JsBridge/blob/master/README.md 该库充当webview与应用程序Java部分之间的桥梁

答案 2 :(得分:1)

是的,我们的想法是将一个对象注入JS部分,并将其用作在本机部分内调用函数的桥梁。更新了反映变化的git仓库。唯一的问题是,在我们注入事件监听器之前,我们必须确保页面已完全加载,因此可能需要一些时间。首先是添加接口<?php namespace Technobrave\Users\Models; use Model; /** * Model */ class User extends Model { use \October\Rain\Database\Traits\Validation; /* * Validation */ public $rules = [ 'team_id' => 'required', ]; public $customMessages = [ 'team_id.required' => 'Please select Team', ]; /** * @var string The database table used by the model. */ public $table = 'backend_users'; }

然后定义类

mWebview.addJavascriptInterface(new JSInterface(), "jsnativebridge");

然后等待页面加载并添加如下所示的事件监听器

private class JSInterface {
        @JavascriptInterface
        public void playPauseClicked(String string) {
            Log.d("console", "" + string);
        }
    }

你可以参考git repo,添加了一个工作演示。 干杯