IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

WebView refuse de sauvegarder certaines données de navigation


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut WebView refuse de sauvegarder certaines données de navigation
    à tous,

    Je rencontre un petit souci avec l'utilisation de WebView. Sur un site en particulier (intranet professionnel), le webview exécuté sur Android "refuse" d'enregistrer les données de navigation (login, password, configuration utilisateur, ...). Je précise "exécuté sur Android" car à l'origine j'ai fait face à ce souci en travaillant sur un projet OSX/Android (pas iOS hein ) écrit en Qt/QML. Le même code permettant une compilation sur les deux OS j'ai pu la tester donc sur mon mac et je ne rencontre aucun souci.

    Rentrons dans le vif du sujet :

    Mon application, enfin la partie webview, est très simple et ne consiste (pour le moment) qu'à la simple déclaration du composant. Coté autorisation, j'ai fait plusieurs tests, jusqu'à tout autoriser !!! Voici ce que cela donne pour le moment :

    Le fichier activity_main.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
     
     
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/editText"
                android:hint="Enter Text"
                android:focusable="true"
                android:textColorHighlight="#ff7eff15"
                android:textColorHint="#ffff25e6"
                android:layout_marginTop="46dp" />
     
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Enter"
                android:id="@+id/button"
                android:layout_below="@+id/editText" />
     
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Accès direct"
                android:id="@+id/button2"
                android:layout_alignTop="@+id/button"
                android:layout_toRightOf="@+id/button"
                android:layout_toEndOf="@+id/button" />
     
            <WebView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/webView"
                android:layout_below="@+id/button"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentBottom="true" />
     
        </RelativeLayout>
    Le fichier MainActivity.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    package com.example.charlie.myapplication;
     
        import android.os.Bundle;
        import android.webkit.WebView;
        import android.webkit.WebViewClient;
        import android.app.Activity;
        import android.view.View;
        import android.widget.Button;
        import android.widget.EditText;
     
     
        public class MainActivity extends Activity  {
            Button b1;
            Button b2;
            EditText ed1;
     
            private WebView wv1;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
     
                b1=(Button)findViewById(R.id.button);
                b2=(Button)findViewById(R.id.button2);
                ed1=(EditText)findViewById(R.id.editText);
     
                wv1=(WebView)findViewById(R.id.webView);
                wv1.setWebViewClient(new WebViewClient());
     
                b1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        String url = ed1.getText().toString();
     
                        wv1.getSettings().setLoadsImagesAutomatically(true);
                        wv1.getSettings().setJavaScriptEnabled(true);
                        wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
                        wv1.loadUrl(url);
                    }
                });
     
                b2.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        wv1.getSettings().setLoadsImagesAutomatically(true);
                        wv1.getSettings().setJavaScriptEnabled(true);
                        wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
                        wv1.loadUrl("http://chemin/vers/intranet");
                    }
                });
            }
        }
    Fichier AndroidManifest.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.example.charlie.myapplication">
     
            <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
            <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
            <uses-permission android:name="android.permission.INTERNET"/>
            <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
            <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
     
            <application
                android:allowBackup="true"
                android:icon="@mipmap/ic_launcher"
                android:label="@string/app_name"
                android:supportsRtl="true"
                android:theme="@style/AppTheme">
                <activity android:name=".MainActivity">
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
                </activity>
            </application>
     
        </manifest>
    Ce qui est étonnant c'est qu'une connexion sur des sites tels que Google, Yahoo, Forum Qt, ... ne pose pas de problème. En fait pour le moment il n'y a que sur l'intranet pro que j'ai besoin d'utiliser que ça bloque. Autre fait étrange : je ne rencontre pas ce souci avec d'autres navigateurs comme Opéra, Firefox, Chrome ou même l'appli Internet de mon Galaxy S6. J'ai aussi essayé sur une Galaxy Tab 2 et une Galaxy Tab A. IDEM.

    De plus, j'ai fait des tests avec les navigateurs ci-dessus en désactivant les cookies : ça fonctionne correctement sur le site en question. J'en déduis donc que ça ne doit pas bloquer avec mon appli.

    Et pour finir, si dans les gestions d'applications d'Android je supprime toutes les données pour ces navigateurs et de mon appli, que je les relance juste en allant sur le site en question je remarque que les "grands" navigateurs stockent plus de data que mon appli. Ça veut sûrement rien dire, mais ça peut aussi vouloir dire quelque chose .

    Que pensez-vous de tout cela ? Evidemment vous comprendrez que le plus délicat, c'est que je ne peux pas vous donner l'adresse du site qui me pose problème et qu'il n'y a pour le moment qu'avec celui-là que je note ce hic.

    Si vous avez une piste de réflexion je suis très preneur.


    D'avance merci à tous.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Au débotté, regarde peut-être du côté des cookies ?
    Vu que c'est le mécanisme utilisé en général pour sauvegarder ces données.

    Mot clef : WebView androi cookie, CookieManager android, CookieSyncManager android.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Au débotté, regarde peut-être du côté des cookies ?
    Vu que c'est le mécanisme utilisé en général pour sauvegarder ces données.

    Mot clef : WebView androi cookie, CookieManager android, CookieSyncManager android.

    Encore un qui n'a pas lu mon post en entier

    Plus sérieusement, j'avais aussi mis en potentiel problème les cookies lors du développement de l'application en Qt/QML, sauf que :
    • ça fonctionne sur PC et à code égal je ne pense pas que les cookies soient différents d'un OS à l'autre ;
    • ça fonctionne si je désactive les cookies sur OPERA, FF ou Chrome.



    Cela dit en souhaitant m'en assurer je suis tomber sur cette option de WebView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    settings.setDomStorageEnabled(true);
    Et là le site fonctionne correctement. Ça semble donc correspondre à ce que j'imaginais : un problème de stockage des donées.



    Donc merci pour ton aide (indirecte ).

    Bon ça ne solutionne qu'à moitié mon problème... je sais d'où vient l'erreur mais je ne sais pas comment la résoudre en Qt/QML, car mon composant WebView n'offre pas ce paramètre... Mais ça ne concerne plus vraiment cette partie de DVP. A moins qu'une solution annexe puisse exister, par exemple de AndroidManifest.xml ?


    Encore merci.


    PS : gros avantage, je me suis (enfin) mis à Android Studio... c'est pas mal, surtout que ça sort une appli toute légère. Dommage qu'il y ai du Java à taper . J'ai encore un peu de mal avec. Mais un jour qui sait
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Comment sauvegarder des données ?
    Par Aspic dans le forum VB.NET
    Réponses: 14
    Dernier message: 15/07/2007, 15h47
  2. [debutant][XML] sauvegarde de donnée provenant de textbox
    Par moust dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 28/06/2005, 15h22
  3. extraire certaines données d'un fichier texte
    Par davz88 dans le forum C++
    Réponses: 11
    Dernier message: 26/03/2005, 13h00
  4. sauvegarde des données des tables
    Par tomm dans le forum Bases de données
    Réponses: 18
    Dernier message: 27/04/2004, 21h29
  5. [Kylix] Sauvegarde de donnée utilisateur....
    Par Eclypse dans le forum EDI
    Réponses: 1
    Dernier message: 11/05/2002, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo