web-dev-qa-db-ja.com

Android Webview:決定されたVisibility()を呼び出すことができません-pidの接続を見たことはありません

Android Webviewがあり、リンクをクリックしてファイル(pdfなどの画像)をダウンロードすると、エラーメッセージが表示されます。

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

私が間違っていることは何ですか?誰が助けてくれる!?

30
Laurens V

ほんの少しの設定:

    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setDomStorageEnabled(true);
16
Burhan ARAS

同じエラーが出ましたが、Burhansのソリューションは役に立ちませんでした。異なるURLの読み込みが速すぎると、問題が発生したと思います。

編集:ユーザー2652394に行くより良いソリューションクレジットが見つかりました WebViewを正しくロードするには2回ロードする必要があります

このようなことをしなければなりません:

        webView.postDelayed(new Runnable() {

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

バックグラウンド

ブラウザエンジン内のmethodのソースコードは、errorBindingManagerImpl.Java)、 Chromiumソース

_@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:..")を呼び出すと、実行される場合があるページがロードされる前

詳細

詳細については、 this stackoverflow answerを参照してください。

3
Jon Goodwin

私の場合、この問題はレイアウトプロパティの設定が正しくないために発生します。私が使用した:

    <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」設定を削除すると、問題は解決しました。

3
Hessam J.E

私は同じ問題に直面しました。

WebViewに静的な高さ(300dpなど)を指定するか、minHeight値を指定することで解決しました。

2
AlexVPerl

これは私が同様の問題を修正した方法です:

    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(...
2
manuel

パーティーに遅れるが、いくつかを助けるかもしれない。地獄のように愚かに聞こえるかもしれませんが、私が犯した間違いはhttp://をURLの先頭に追加します。

1

インターネット許可がマニフェストファイルに正しく設定されているかどうかを確認します。アプリケーションタグのアクセス許可タグは外側にあるであることを確認してください。

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

これが何らかの助けになることを願っています。

0
Manu Antony

私は同じ問題に直面しました。このコードを提供することで問題を修正できます。

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

の代わりに:

webview.loadUrl(url);

次に、urlhttps://で始まるように設定します

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

onPageFinishedの代わりにshouldOverrideUrlLoadingメソッドを使用して回避策を見つけました。また、引数のリストに必要なURLを提供します。

唯一のトリックは、ページの読み込み自体でonPageFinishedが呼び出されたときにメソッドのメインロジック(私の場合はToastを作成)がトリガーされないようにチェックを設定することです。

0
Bord81