我使用WebView来显示这个网站 http://app.wlojii.com
我想在通知栏中设置控制面板来播放/停止音乐。
问题我无法找到播放/停止音乐的功能。
我检查了button元素并尝试了一些函数变体(play,play(),player.play()),我用这个方法来调用函数:
mWebView.loadUrl(“javascript:...”)
我对JavaScript和网络不太熟悉,我需要一些帮助。
答案 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,添加了一个工作演示。 干杯