您必须“升级” ChildBrowser:在第 340 行附近的某个地方有以下代码:webview.setWebViewClient(client);
. 将其替换为以下内容:
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webview.loadUrl("javascript:(function(){"+"var t=document.head.getElementsByTagName('title')[0];t.innerHTML="+myNewTitle+"})()");
}
});
您还必须调整读取代码的选项showWebPage()
to set myNewTitle
。但在那之后,你应该很高兴。
编辑:
基本上我决定——至少为了我的使用,也可能是你的——不需要工具栏。最初,我调整了 ChildBrowser,以便我可以通过将完整的 HTML 源发送回 JS 代码来轻松地执行 Google oAuth2。我绝对不需要工具栏,因为用户会去谷歌想要它去的地方。我不得不从代码中破解一些东西,而原作者可能会对我对他的代码所做的事情感到生气......这是一个清单:
import android.view.Gravity;
import android.util.TypedValue;
import android.graphics.Color;
import android.graphics.Typeface;
public class ChildBrowser extends Plugin {
**public String zeTitle;**
// private EditText edittext;
private TextView edittext;
必须将所有引用EditText
更改为TextView
.
result = this.showWebPage(args.getString(0), args.optJSONObject(1)**, args.getString(2)**);
您还需要更改 .js 文件中的内容。
public String showWebPage(final String url, JSONObject options**, String myNewTitle**) {
if (options != null) {
showLocationBar = options.optBoolean("showLocationBar", true);
}
**zeTitle=myNewTitle;**
注释掉所有ImageButton
相关代码。
edittext = new TextView(ctx.getContext()); // insread of EditText
注释掉edittext.setOnKeyListener
// edittext.setText(url);
edittext.setText(zeTitle);
edittext.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);
edittext.setGravity(Gravity.CENTER);
edittext.setTextColor(Color.DKGRAY);
edittext.setTypeface(Typeface.DEFAULT_BOLD);
仅将需要的内容添加到工具栏:
// toolbar.addView(back);
// toolbar.addView(forward);
toolbar.addView(edittext);
// toolbar.addView(close);
最后:
public class ChildBrowserClient extends WebViewClient {
// EditText edittext;
TextView edittext;
/**
* Constructor.
*
* @param mContext
* @param edittext
*/
public ChildBrowserClient(TextView mEditText) {
// this.edittext = mEditText;
}
在 JS 代码中:
cb.showWebPage(YOUR_URL, {showLocationBar:true}, YOUR_TITLE);
你应该很高兴。我将在 GitHub 上发布我使用的 ChildBrowser 的更新版本。