Подтвердить что ты не робот

Android Webview: невозможно вызвать функцию definVisibility() - никогда не видел подключения для pid

У меня есть Android-представление Android, и когда я нажимаю ссылку для загрузки файла (изображение pdf и т.д.), я получил сообщение об ошибке.

Error message:
Cannot call determinedVisibility() - never saw a connection for the pid

Любая идея, что я делаю неправильно? Кто может помочь, пожалуйста!

4b9b3361

Ответ 1

Просто немного конфигурации:

    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setDomStorageEnabled(true);

Ответ 2

У меня такая же ошибка, и решение Burhans не помогло мне. Я думаю, что все пошло не так, когда вы пытаетесь загрузить разные URL-адреса слишком быстро.

Изменить: Найдены лучшие кредиты для решения, перейдите на user2652394 WebView необходимо загрузить дважды, чтобы правильно загрузить

Вам нужно сделать что-то вроде этого:

        webView.postDelayed(new Runnable() {

            @Override
            public void run() {
                webView.loadUrl(landingpage);
            }
        }, 500);

Ответ 3

Эта проблема в моем случае создает неправильные настройки в свойствах макета. Я использовал:

    <WebView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/webView"
    android:layout_below="@+id/textView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="false"
    android:layout_alignWithParentIfMissing="false" />

Вместо настройки:

    <WebView
    android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/textView" />

Проблемы были решены, когда я удалил настройки layout_alignParent.

Ответ 4

Я столкнулся с той же проблемой.

Была решена путем предоставления WebView статической высоты (т.е. 300 дп) или указания значения minHeight.

Ответ 5

Вот как я исправил аналогичную проблему:

    mWebView.setWebChromeClient(new WebChromeClient());
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);

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

    mWebView.loadURL(...

Ответ 6

Поздно к партии, но может помочь некоторым. Может показаться глупым, как черт, но ошибка, которую я сделал, не добавляла http:// в начало URL-адреса.

Ответ 7

Фон

Вот исходный код метода в механизме браузера, который дает ошибку (BindingManagerImpl.java), от Источник хрома:

@Override
public void determinedVisibility(int pid) {
    ManagedConnection managedConnection;
    synchronized (mManagedConnections) {
        managedConnection = mManagedConnections.get(pid);
    }
    if (managedConnection == null) {
        Log.w(TAG, "Cannot call determinedVisibility() - never saw a connection for the pid: "
                + "%d", pid);
        return;
    }

Анализ

Это предупреждение рендеринга из содержимого.

Последовательные вызовы loadUrl вызывают состояние гонки. Проблема в том, что loadUrl("file://..") не выполняет немедленно, поэтому, когда вы вызываете loadUrl("javascript:.."), она иногда выполняет до  страница загружена.

Detail

Подробнее см. этот ответ stackoverflow.

Ответ 8

Проверьте, правильно ли установлено разрешение Интернета в файле манифеста. Убедитесь, что тег разрешений должен находиться вне вашего тега приложения.

<uses-permission android:name="android.permission.INTERNET" />

Надеюсь, это может помочь кому-то.

Ответ 9

Я нашел обходное решение, используя onPageFinished метод вместо shouldOverrideUrlLoading. Он также предоставляет нужный URL-адрес в списке аргументов.

Единственный трюк - установить проверку так, чтобы основная логика метода (в моем случае создание Toast) не запускалась, когда onPageFinished вызывается на самой загрузке страницы.

Ответ 10

mWebView.setDownloadListener(new DownloadListener() {
  @Override
  public void onDownloadStart(String url, String userAgent, String contentDisposition, 
    String mimetype, long contentLength) {
    Log.d("download",url);
  }
});

Ответ 11

Я столкнулся с той же проблемой. Я могу исправить свою проблему, указав этот код:

webView.postDelayed(new Runnable() {
        @Override
        public void run() {
            webView.loadUrl(url);
        }
    }, 500);

вместо:

webview.loadUrl(url);

тогда установите url начинается с https://