Android Webview: ne peut pas appeler déterminedvisibility () - n'a jamais vu une connexion pour le pid

j'ai un Android Webview et quand je clique sur un lien pour télécharger un fichier (image de pdf etc) j'ai un message d'erreur.

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

une idée de ce que je fais de mal? Qui peut l'aider à s'il vous plaît!?

27
demandé sur Laurens V 2015-10-12 16:57:28

11 réponses

juste un peu de configuration:

    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setDomStorageEnabled(true);
15
répondu Burhan ARAS 2015-10-26 14:46:58

j'ai eu la même erreur et Burhans solution ne m'a pas aidé. Je pense que les choses ont mal tourné quand vous essayez de charger des urls différentes trop vite.

modifier: trouver une meilleure solution WebView doit être chargé deux fois pour charger correctement

Vous devez faire quelque chose comme ceci:

        webView.postDelayed(new Runnable() {

            @Override
            public void run() {
                webView.loadUrl(landingpage);
            }
        }, 500);
5
répondu Dennis Allert 2017-05-23 11:47:05

ce problème dans mon cas produire par des paramètres incorrects dans les propriétés de mise en page. J'avais utilisé:

    <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" />

au lieu de

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

les problèmes avaient été résolus, lorsque j'ai supprimé les paramètres" layout_alignParent".

3
répondu Hessam J.E 2017-03-24 16:30:57

j'ai fait face à la même question.

a été résolu en donnant à un WebView une hauteur statique (c'est-à-dire 300dp) ou en spécifiant une valeur de minHeight.

2
répondu AlexVPerl 2016-07-23 22:51:23

C'est ainsi que j'ai corrigé une question similaire:

    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
répondu manuel 2016-08-12 12:08:11

arrière-plan

voici le code source de la méthode dans le moteur de navigateur qui donne le erreur ( BindingManagerImpl.java ), de source de Chrome :

@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;
    }

analyse

C'est un avertissement de rendu à partir de contenu.

appel consécutif appel à loadUrl cause une condition de race . Le problème est que loadUrl("file://..") n'est pas complet immédiatement, et donc quand vous appelez loadUrl("javascript:..") il sera parfois exécuter avant la page est chargée.

détail

pour plus de détails voir ce stackoverflow réponse.

2
répondu Jon Goodwin 2017-09-05 20:28:02

en retard à la fête, mais pourrait aider certains. Peut sembler stupide comme l'enfer, mais l'erreur que j'ai faite n'était pas d'ajouter http:// au début de L'URL.

1
répondu kashyap jimuliya 2017-05-31 09:41:33

vérifier si la permission internet est correctement définie dans le fichier de manifestes. Assurez-vous que l'étiquette de permission doit être à l'extérieur de de votre étiquette de demande.

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

espérons que cela puisse aider quelqu'un.

0
répondu Manu Antony 2017-05-02 05:07:18

j'ai trouvé une solution en utilisant la méthode onPageFinished au lieu de shouldOverrideUrlLoading . Il fournit également L'URL nécessaire dans la liste des arguments.

le seul truc est de mettre un check de sorte que la logique principale de la méthode (dans mon cas faire un Toast) n'est pas déclenché lorsque onPageFinished est appelé sur la charge de la page elle-même.

0
répondu Bord81 2017-08-14 08:41:09
mWebView.setDownloadListener(new DownloadListener() {
  @Override
  public void onDownloadStart(String url, String userAgent, String contentDisposition, 
    String mimetype, long contentLength) {
    Log.d("download",url);
  }
});
0
répondu qingsong xu 2017-09-15 04:22:37

j'ai fait face au même problème. Je peux corriger mon problème en donnant ce code:

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

au lieu de:

webview.loadUrl(url);

puis, définir le url commence par https://

0
répondu Ameer Sabith 2017-10-24 18:50:07