Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Application WebView pour Android

21 Mars 2020 , Rédigé par Ghislain Martin Publié dans #DEVELOP, #ANDROID, #STUDIO, #HTML5, #WEBVIEW

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>

 

 

Partager cet article

Commenter cet article