Application WebView pour Android
Petites notes perso pour ceux qui, comme moi, voudraient faire des applications Android incluant le widget WebView, et qui, comme moi, auraient un bug méchant lors de l'utilisation de liens entre pages HTML. L'idée de base est d'avoir une page INDEX.HTML avec 2 liens qui appellent, par exemple, les pages PAGE1.HTML et PAGE2.HTML. Bon, et bien sur certains terminaux, ainsi que sur l'émulateur, ça se passe bien. Mais sur des smartphones plus récent, ça crash carrément !
La vidéo qui m'a vraiment aidée :
Android Application With HTML,CSS,JS
https://www.youtube.com/watch?v=Kufnu_q8MwA
Le post de StackOverflow qui a réglé le plantage :
Android WebView crashes when clicking on a link
https://stackoverflow.com/questions/1559057/android-webview-crashes-when-clicking-on-a-link
Pour être précis, la vidéo m'a permis de facilement mettre en place le bordel de départ. Et concernant le forum, bizarrement, ce n'est pas la réponse la mieux notée qui m'a aidée mais la seconde réponse. Le code source ci-dessous permet d'avoir une application FULLSCREEN et qui ne répond pas à la rotation du téléphone. Mais au niveau GUI ("main_activity.xml") il faut jouer sur les contraintes pour que la WebView prenne bien tout l'espace disponible à 100% ni plus ni moins. Sinon y'a débordements et crises de nerfs !
public class MainActivity extends Activity { @SuppressLint("SourceLockedOrientationActivity") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_main); String myurl = "file:///android_asset/index.html"; WebView view = (WebView)this.findViewById(R.id.webview); view.setWebViewClient(new WebViewClient()); view.getSettings().setJavaScriptEnabled(true); view.loadUrl(myurl); } }
<html style="margin: 0; padding: 0;"> <body style="margin: 0; padding: 0;"> <p>MENU</p> <p><a href="page1.html">PAGE 1</a></p> <p><a href="page2.html">PAGE 2</a></p> </body> </html>
<html style="margin: 0; padding: 0;"> <body style="margin: 0; padding: 0;"> <p>PAGE 1</p> <p><a href="index.html">RETOUR</a></p> </body> </html>
<html style="margin: 0; padding: 0;"> <body style="margin: 0; padding: 0;"> <p>PAGE 2</p> <p><a href="index.html">RETOUR</a></p> </body> </html>
Commenter cet article