我有Android Webview,当我点击链接下载文件(pdf等图像)时,收到错误消息。
Error message:
Cannot call determinedVisibility() - never saw a connection for the pid
知道我做错了什么吗?谁可以帮忙!?
答案 0 :(得分:16)
只需一点配置:
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
答案 1 :(得分:5)
我得到了同样的错误,Burhans解决方案没有帮助我。 当你试图加载不同的网址时,我认为出了问题。
编辑:找到更好的解决方案信用转到user2652394 WebView must be loaded twice to load correctly
你必须做这样的事情:
except
答案 2 :(得分: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”设置时,问题已经解决。
答案 3 :(得分:3)
以下是浏览器引擎中方法的源代码,它提供了错误( BindingManagerImpl.java ),来自Chromium source:
@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。
答案 4 :(得分:2)
我遇到了同样的问题。
通过给WebView提供静态高度(即300dp)或指定minHeight值来解决。
答案 5 :(得分:2)
这就是我修复类似问题的方法:
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 :(得分:1)
迟到派对,但可能有所帮助。
可能听起来很傻,但我犯的错误是没有在网址的开头添加http://
。
答案 7 :(得分:0)
检查是否在Manifest文件上正确设置了Internet权限。确保应用标记的权限标记应在之外。
<uses-permission android:name="android.permission.INTERNET" />
希望这可能对某人有所帮助。
答案 8 :(得分:0)
我使用shouldOverrideUrlLoading
方法代替onPageFinished
找到了解决方法。它还在参数列表中提供了所需的URL。
唯一的技巧是设置一个检查,以便在页面加载本身调用{{1}}时不会触发方法的主要逻辑(在我的情况下制作Toast)。
答案 9 :(得分:0)
mWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition,
String mimetype, long contentLength) {
Log.d("download",url);
}
});
答案 10 :(得分:0)
我遇到了同样的问题。我可以通过提供此代码来解决我的问题:
webView.postDelayed(new Runnable() {
@Override
public void run() {
webView.loadUrl(url);
}
}, 500);
而不是:
webview.loadUrl(url);
然后,将url
开头设置为https://