Android Webviewがあり、リンクをクリックしてファイル(pdfなどの画像)をダウンロードすると、エラーメッセージが表示されます。
Error message:
Cannot call determinedVisibility() - never saw a connection for the pid
私が間違っていることは何ですか?誰が助けてくれる!?
ほんの少しの設定:
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
同じエラーが出ましたが、Burhansのソリューションは役に立ちませんでした。異なるURLの読み込みが速すぎると、問題が発生したと思います。
編集:ユーザー2652394に行くより良いソリューションクレジットが見つかりました WebViewを正しくロードするには2回ロードする必要があります
このようなことをしなければなりません:
webView.postDelayed(new Runnable() {
@Override
public void run() {
webView.loadUrl(landingpage);
}
}, 500);
ブラウザエンジン内のmethodのソースコードは、error(BindingManagerImpl.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を参照してください。
私の場合、この問題はレイアウトプロパティの設定が正しくないために発生します。私が使用した:
<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」設定を削除すると、問題は解決しました。
私は同じ問題に直面しました。
WebViewに静的な高さ(300dpなど)を指定するか、minHeight値を指定することで解決しました。
これは私が同様の問題を修正した方法です:
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(...
パーティーに遅れるが、いくつかを助けるかもしれない。地獄のように愚かに聞こえるかもしれませんが、私が犯した間違いはhttp://
をURLの先頭に追加します。
インターネット許可がマニフェストファイルに正しく設定されているかどうかを確認します。アプリケーションタグのアクセス許可タグは外側にあるであることを確認してください。
<uses-permission Android:name="Android.permission.INTERNET" />
これが何らかの助けになることを願っています。
私は同じ問題に直面しました。このコードを提供することで問題を修正できます。
webView.postDelayed(new Runnable() {
@Override
public void run() {
webView.loadUrl(url);
}
}, 500);
の代わりに:
webview.loadUrl(url);
次に、url
がhttps://
で始まるように設定します
mWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition,
String mimetype, long contentLength) {
Log.d("download",url);
}
});
onPageFinished
の代わりにshouldOverrideUrlLoading
メソッドを使用して回避策を見つけました。また、引数のリストに必要なURLを提供します。
唯一のトリックは、ページの読み込み自体でonPageFinished
が呼び出されたときにメソッドのメインロジック(私の場合はToastを作成)がトリガーされないようにチェックを設定することです。