Плагин Phonegap ChildBrowser: отключить / скрыть URL в адресной строке, но НЕ кнопки назад / вперед / выход - PullRequest
5 голосов
/ 03 января 2012

есть ли способ скрыть или отключить поле URL в адресной строке? В моем случае устройство представляет собой планшет, работающий как браузер киоска, поэтому разрешен только один URL.

Я исправил это, изменив код в ChildBrowser.java на

private void navigate(String url) {
    InputMethodManager imm = (InputMethodManager)this.ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
    if (!url.startsWith("http")) {
        this.webview.loadUrl("http://" + url);
    }
    this.webview.loadUrl("http://www.my-only-allowed-site.example.org");
    this.webview.requestFocus();
}

Это работает хорошо, но не хорошо. Вы все еще можете увидеть URL. Я хотел бы иметь любое из этих возможных решений:
1) полностью скрыть поле URL
2) скрыть программную клавиатуру при нажатии на поле URL
3) установите цвет шрифтов URL на черный

Есть идеи?
заранее спасибо

Ответы [ 2 ]

4 голосов
/ 17 января 2012

Если вы измените исходный код для плагина, вы можете скрыть поле URL и кнопку закрытия, изменив исходный код для плагина и просто закомментировав следующую строку:

toolbar.addView(back);       //shows the back button
toolbar.addView(forward);    //shows the forward button
//toolbar.addView(edittext); //shows the URL - comment this line out to hide the URL
toolbar.addView(close);      //shows the close button

Edit : упс, я только что видел из вашего комментария, что вы поняли это точно так же!

0 голосов
/ 03 января 2012

Я ничего не знаю о Phonegap, но я предполагаю, что вы используете стандартный Android WebView?

Если вы видите строку URL, то это обычно означает, что системный браузер по умолчанию вызывается для обработки загрузки страницы. Для предотвращения этого установите WebViewClient следующим образом ...

this.webview.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }
});

Хост-приложение вызывает метод shouldOverrideUrlLoading(...), чтобы определить, следует ли ему переопределить загрузку с помощью диспетчера активности, чтобы найти подходящее приложение (обычно это стандартное приложение для браузера). Возвращение false означает, что экземпляр WebView хочет обработать свою собственную загрузку URL, и вы вообще не увидите строку URL.

РЕДАКТИРОВАТЬ: Если это исправляет, но также теряет кнопки навигации, то я предлагаю вам сохранить свою собственную коллекцию истории и предоставить свои собственные кнопки для возврата / вперед / выхода.

...