Bonsoir a tous,
etant assez noob en dev android, je coince depuis quelques jours sur un probleme particulier : j'ai créé une petite appli contenant un webview fullscreen permettant d'afficher une page html issue d'un serveur perso entré en param dans l'appli. L'adresse du site est du style : http://monlogin:monpass@192.168.1.1:...480&height=800
Tout fonctionne très bien, sauf sur un phone passé recemment en 4.0.3 qui n'affiche rien d'autre qu'une page blanche... Sous ce 4.0.3, le menu de l'appli fonctionne bien, rien d'anormal sauf l'affichage dans la webview qui reste désespérément blanche. Si je change l'url, en mettant google le webview affiche bien la page de google. Alors je sèche....
Par avance merci pour votre aide ou remarques sur mon code.
Voici mon code (soyez indulgents ) :
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
 
public class Main extends Activity implements OnClickListener {
	public WebView webView;
	private ProgressDialog progressBar;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		SharedPreferences preferences;
		super.onCreate(savedInstanceState);
	        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
		setContentView(R.layout.main);
		//on initialise les preferences
preferences = PreferenceManager.getDefaultSharedPreferences(this);
 
		String _url = preferences.getString("url", "n/a");
		if (_url.equals("n/a")) {
			finish();
			Intent i = new Intent(Main.this,prefs.class);
			startActivity(i);
			Toast.makeText(this, "Paramétrage", Toast.LENGTH_SHORT).show();
		}
		else {			webView = (WebView) findViewById(R.id.webview);
 
			final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
 
			progressBar = ProgressDialog.show(Main.this, "Connexion au serveur","Chargement...", false, true);
 
		String port = preferences.getString("port", "n/a");
		Boolean enablelogin = preferences.getBoolean("enablelogin", false);
		String login = preferences.getString("login", "n/a");
		String password = preferences.getString("password", "n/a");
		String screen = preferences.getString("screen", "n/a");
		String scr_orientation = preferences.getString("scr_orientation", "Automatique");
		Boolean screen_prefs = preferences.getBoolean("screen_prefs", false);
		String res_x = "1200";
		String res_y = "800";
		Integer _version = Build.VERSION.SDK_INT;
	        if (scr_orientation.equals("Portrait")) {
				setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
 
			}
			if (scr_orientation.equals("Paysage")) {
				setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
			}
 
			if (scr_orientation.equals("Automatique")) {
				setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
			}
			getRequestedOrientation();
		}
 
		if (screen_prefs) {
			res_x = preferences.getString("res_largeur", "1280");
			res_y = preferences.getString("res_hauteur", "400");
		} else {
 
			// je recupere la resolution
			DisplayMetrics dm = new DisplayMetrics();
			getWindowManager().getDefaultDisplay().getMetrics(dm);
			Integer resx = dm.widthPixels;
			Integer resy = dm.heightPixels;
			res_x = resx.toString();
			res_y = resy.toString();
		}
			// je reecris l'URL
			String adresse = "http://";
			// je teste si login/pass ou non dans les prefs
			if (enablelogin) {
				adresse = adresse + login.trim() + ":";
				adresse = adresse + password.trim() + "@";
			}
			adresse = adresse + _url.trim() + ":" + port.trim() + "/screen?"
			+ screen.trim() + "&width=" + res_x + "&height=" + res_y;
			Log.i("adresse",adresse);
			// Petit affichage bref lors de la connexion
			webView.setWebViewClient(new WebViewClient(){
				public void onPageFinished(WebView view, String url) {
					if (progressBar.isShowing()) {
						progressBar.dismiss();
						view.loadUrl(url);
					}
				}
 
				public void onReceivedError(WebView view, int errorCode,
						String description, String failingUrl) {
					 Log.e("Erreur....", "" + description);
					 Toast.makeText(Main.this, description,
					 Toast.LENGTH_LONG).show();
					alertDialog.setTitle("Error");
					alertDialog.setMessage(description + "\n" + failingUrl);
					alertDialog.setButton("OK",
							new DialogInterface.OnClickListener() {
								public void onClick(DialogInterface dialog,
										int which) {
									return;
								}
							}); //ferme le setbutton
					alertDialog.show();
				}
			});
 
			webView.getSettings().setSupportZoom(true);
		//active le zoom manuel
			webView.getSettings().setBuiltInZoomControls(true);
			webView.setInitialScale(100);
			webView.clearView();
				//	adresse = "http://google.fr"; //comme ca, ca marche
			webView.loadUrl(adresse);
		}
	}
	@Override
	public void onBackPressed() {
		if (webView.canGoBack()) {
			webView.goBack();}
	}
 
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
 
		menu.add(0,1000,0,"Quitter").setIcon(android.R.drawable.ic_lock_power_off);
		menu.add(0,1001,0,"Préférences").setIcon(android.R.drawable.ic_menu_edit);
		menu.add(0,1002,0,"Info").setIcon(android.R.drawable.ic_menu_info_details);
		return super.onCreateOptionsMenu(menu);	
	}
 
	public boolean onOptionsItemSelected(MenuItem item){
		switch(item.getItemId()){
		case 1000:
			Quitter();
			break;
		case 1001:
			finish();
			Intent i = new Intent(Main.this, prefs.class);
			startActivity(i);
			Toast.makeText(this, "Préférences", 1000).show();
			break;
		case 1002:
			Toast.makeText(this, "Info", 1000).show();
			setContentView(R.layout.info);
 
			Button bouton_retour = (Button) findViewById(R.id.button_retour);
			TextView titre = (TextView) findViewById(R.id.titre);
			bouton_retour.setOnClickListener(this);
			try{
				PackageManager pm = getPackageManager();
				PackageInfo pi;
				pi = pm.getPackageInfo(getPackageName(), 0);
				Log.i("test","Version === " + pi.versionName);
				String version = "v." + pi.versionName;
				titre.setText(version);
			}
			catch (Exception e){}
			break;
		}
		return super.onOptionsItemSelected(item);
	}
 
	private void Quitter() {
		Toast.makeText(this, "Au revoir", Toast.LENGTH_SHORT).show();
		System.exit(0);
			}
 
	@Override
	public void onClick(View v) {
		finish();
		Intent i = new Intent(Main.this,Main.class);
		startActivity(i);
	}
 
	private class myWebViewClient extends WebViewClient {
		@Override
		public void onPageFinished(WebView view, String url) {
			view.loadUrl(url);
		}
 
	}
}