pyrro Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 bonjour, voila j'ai une activité principale qui présente un webview et je souhaiterais savoir si il est possible de tuer l'activité pour que peu importe avec quel bouton l'utilisateur sorte du programme ( BACK ou HOME ) , la fois d'après il se retrouve sur la page d'accueil et non pas sur la page sur laquelle il était ? pour cela j'avais placer se bout de code dans mon activity mais cela ne marche pas puisque quand je quitte avec home cela me ramène a l'endroit quitter : public boolean onKeyDown(int keyCode, KeyEvent event){ if (keyCode == KeyEvent.KEYCODE_HOME) { finish(); objetview.clearCache(isFinishing()); } return super.onKeyDown(keyCode, event); } PS: j'ai en plus un probleme avec le cache qui ne se vide pas :P PS2: objetview c'est mon webview PS3: j'ai déjà essayer avec system.exit pour tuer à la place du finish mais même résultat PS4: elle est pas encore sortie Merci d'avance et désolé pour la blague pourrie et les fautes si il y a mais vu l'heure qu'il est ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
j3n Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 finish(); Je ne suis pas sûre mais essaie avec : TonActivity.this.finish(); Lien vers le commentaire Partager sur d’autres sites More sharing options...
pyrro Posté(e) 16 mars 2011 Auteur Share Posté(e) 16 mars 2011 Cela ne marche pas :P j'atterris toujours sur la page que j'avais quitter, en faite elle se bloque comme lorsque que l'on quitte le browser avec home elle garde la page en mémoire. Sinon quelqu'un ne connaitrait pas un autre moyen de procéder que le mien car je ne pense pas que tuer un programme c'est la bonne chose a faire ? merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
j3n Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 Au pire, dans l'action de ton bouton, tu change l'url de ta webview puis tu quittes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pyrro Posté(e) 16 mars 2011 Auteur Share Posté(e) 16 mars 2011 J'ai essayé mais sa ne marche pas non plus, c'est tous mon bloc de code qui ne marche pas j'ai essayé un Log.i , il ne me mais rien dans le debug pourtant il est juste après mon oncreate dans l'activité je ne comprend vraiment rien .... voici mon code si quelqu'un arrive à m'expliquer : public class hello extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //clearCache(); NavigatorStart(); } private WebView objetview; public boolean onKeyDown(int keyCode, KeyEvent event){ if (keyCode == KeyEvent.KEYCODE_HOME) { Log.i("","home touch"); String fin = "http://....................."; objetview.loadUrl(fin); hello.this.finish(); objetview.clearCache(isFinishing()); } return true; } /* public void clearCache (){ WebIconDatabase.getInstance().removeAllIcons(); objetview.clearCache(true); } */ public void NavigatorStart() { String mapage = "http://..................."; objetview = (WebView) findViewById(R.id.webkit); objetview.getSettings().setSavePassword(false); objetview.getSettings().setSaveFormData(false); objetview.getSettings().setJavaScriptEnabled(true); objetview.getSettings().setSupportZoom(false); objetview.setWebChromeClient(new MyWebChromeClient()); objetview.setWebViewClient(new MyWebClient()); objetview.loadUrl(mapage); } } class MyWebChromeClient extends WebChromeClient { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { result.confirm(); return true; } } class MyWebClient extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } Lien vers le commentaire Partager sur d’autres sites More sharing options...
j3n Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 Peux-tu me donner aussi ton xml pour faire des tests? Lien vers le commentaire Partager sur d’autres sites More sharing options...
pyrro Posté(e) 16 mars 2011 Auteur Share Posté(e) 16 mars 2011 ok le voici : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <WebView android:id="@+id/webkit" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> Lien vers le commentaire Partager sur d’autres sites More sharing options...
j3n Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 De ce que j'ai vu, on ne peut pas surcharger le bouton Home (quelques hackers y arrivent). Le mieux est de faire un setUrl() dans ton onCreate(). Lien vers le commentaire Partager sur d’autres sites More sharing options...
pyrro Posté(e) 16 mars 2011 Auteur Share Posté(e) 16 mars 2011 un setUrl ? je ne peut pas le faire dans le oncreate puisque c'est ma fonction NavigatorStart qui lance le webview, a la limite je peut le faire dans la fonction mais sa revient au même que loadUrl ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
j3n Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 Tu avais oublié un onResume. Quand l'application est déjà lancée, elle n'appelle pas le onCreate mais onResume. public class hello extends Activity{ private String mapage; private WebView objetview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mapage = "http://www.google.fr"; setContentView(R.layout.main); NavigatorStart(); } @Override protected void onResume() { super.onResume(); objetview.clearView(); NavigatorStart(); } public void NavigatorStart() { objetview = (WebView) findViewById(R.id.webkit); objetview.getSettings().setSavePassword(false); objetview.getSettings().setSaveFormData(false); objetview.getSettings().setJavaScriptEnabled(true); objetview.getSettings().setSupportZoom(false); objetview.setWebChromeClient(new MyWebChromeClient()); objetview.setWebViewClient(new MyWebClient()); objetview.loadUrl(mapage); } } class MyWebChromeClient extends WebChromeClient { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { result.confirm(); return true; } } class MyWebClient extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } Lien vers le commentaire Partager sur d’autres sites More sharing options...
pyrro Posté(e) 16 mars 2011 Auteur Share Posté(e) 16 mars 2011 Merci beaucoup sa marche nikel, il se fermais a cause de ma fonction pour vider la cache qui n'est pas bonne du tout :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
j3n Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 Pas de souci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pyrro Posté(e) 16 mars 2011 Auteur Share Posté(e) 16 mars 2011 Je voudrais pas abuser mais est ce que tu connaitrait un moyen de supprimer la cache du browser, parce dans la class cache manager du packages android.webkit : http://developer.android.com/reference/android/webkit/CacheManager.html y'a pas de fonction CLEAR et de toute façon cette class va être supprimer lors des prochaine MAJ il dise : Cette méthode est déconseillée. L'accès à la cache HTTP sera supprimée dans une future version Lien vers le commentaire Partager sur d’autres sites More sharing options...
j3n Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 Je ne sais pas du tout comment toucher au cache. Je pense que s'ils suppriment ça c'est qu'il y a une raison. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pyrro Posté(e) 16 mars 2011 Auteur Share Posté(e) 16 mars 2011 ok , pas de soucis je pense que c'est a cause des webapp pour que les chargements soit assez rapide qu'ils est pas besoins de recharger a chaque fois les pages web. En tout cas merci encore Lien vers le commentaire Partager sur d’autres sites More sharing options...
j3n Posté(e) 16 mars 2011 Share Posté(e) 16 mars 2011 Pas de problème, j'ai appris des choses avec ton problème. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.