Основные внутренние ссылки не работают в сотовом приложении?

В моем опубликованном приложении в Android версии 3 не работают внутренние ссылки. На данный момент мое приложение нацелено на Froyo.

Приложение отлично работает на множестве телефонов, но мой новый Galaxy Tab не может обрабатывать внутренние ссылки !! Он может обрабатывать их внутри html-страницы, например:

Go to faq  

Переход к тегу ниже на той же странице:

  

Однако из другого html-файла, то есть страницы индекса, ссылка больше не работает в Honeycomb:

FAQ  

Кроме того, если я перейду по внутренней ссылке и оттуда перейду по ссылке на другую страницу, а затем нажму кнопку «Назад» (она переопределена для перехода на предыдущую страницу веб-просмотра), вы получите ту же ошибку, например:

The webpage at file:///android_asset/folder/mainpage.html#faq might be temporarily    down or it may have moved permanently to a new web address

WTF! Веб-просмотр был только на странице, но вы откликаетесь на 1 секунду позже, и он не может его найти. Он также не может ссылаться на другую страницу html, но все это отлично работает в 1.x, 2.x, только не в 3.1 (не пробовал 3.0)

ПРИМЕЧАНИЕ: Я видел этот почти идентичный вопрос: android_asset не работает в Honeycomb? Но в моем пути к ресурсам нет пробелов.

Я пробовал с веб-клиентом и без него, и безрезультатно пробовал DOM и настройки кеша. Вот пример того, что у меня сейчас есть в oncreate:

        browser = new WebView(this);
//  browser = (WebView) findViewById(R.id.webkit);  // tried with XML and without
    browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    browser.getSettings().setJavaScriptEnabled(true);
    browser.getSettings().setPluginsEnabled(true);
//  browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
//  browser.getSettings().setUseWideViewPort(true);
    browser.setBackgroundColor(Color.parseColor("#333333"));
    browser.setInitialScale(1);
    browser.getSettings().setBuiltInZoomControls(true);


    final Activity MyActivity = this;
    browser.setWebChromeClient(new WebChromeClient() {

        public void onProgressChanged(WebView view, int progress) {
            // Make the bar disappear after URL is loaded, and changes
            // string to Loading...

            setProgressBarIndeterminateVisibility(true);

            MyActivity.setTitle("  Loading . . . " + progress + "%");
            MyActivity.setProgress(progress * 100); // Make the bar

            if (progress == 100) {
                setTitle("  APP TITLE YADA YADA");
                setProgressBarIndeterminateVisibility(false);
            }
        }
    });
    browser.setWebViewClient(new WebViewClient() {
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
        {
            // Handle the error
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);  // note I tried with and without overriding this 
            return true;
        }

    });
    setContentView(browser);

    browser.loadUrl("file:///android_asset/folder/page.html");

11
задан Community 23 May 2017 в 10:33
поделиться