à 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
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 <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>
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
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"); } }); } }
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.
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>
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.
Partager