Aller au contenu

Navigateur dans une application et obtenir l'URL


Rémi

Recommended Posts

Bonjours

Pour mon application j'ai besoin d'ouvrir un navigateur (celui d'origine ou le navigateur préféré) incruster dans la fenetre, et d'en récupérer l'URL quand l'utilisateur presse un bouton.

Merci de votre aide

Lien vers le commentaire
Partager sur d’autres sites

public class AideEnLigne extends Activity 
   {
   @Override
   protected void onCreate(Bundle saveInstanceState)
       {
       super.onCreate(saveInstanceState);
       WebView webview = new WebView(this);
       setContentView(webview);
       webview.loadUrl("http://....htm");        
       }
   }

A toi de mettre en place un champ de saisie de l'url, un bouton naviguer etc...

Lien vers le commentaire
Partager sur d’autres sites

Non, ce que je veux c'est que l'utilisateur tombe sur google, qu'il fasse un recherche ou tape une URL et quand il est sur la page qu'il cherchai, il appuis sur un bouton et a ce moment là, je veux récupérer l'url de la dite page.

Lien vers le commentaire
Partager sur d’autres sites

Maintenant, j'ai extrait le code source de ma page, et je cherche maintenant a trouver une URL contenant le String recherche dans le String source. J'utilise:

    resultat=(source.getResource  (recherche));

Mais Eclipse me dit:

La méthode getResource(String) est indéfinie pour le type String

Qu'est ce qui cloche, je n'ai peu-etre pas bien choisit la méthode pour chercher l'URL, j'ai aussi essayé d'utiliser :

resultat=(source.getSystemResource (recherche))

Lien vers le commentaire
Partager sur d’autres sites

Source est le code source de ma page web que j'ai extrait par une autre portion de code qui marche très bien, ensuit, dans le code source de la page, je veux chercher les URL(s) qui contienne .swf (recherche), car je veux avoir une liste des objet en flash qui sont incruster dans la page.

Lien vers le commentaire
Partager sur d’autres sites

Je crois que j'ai un petit problème avec éclipse puisque sa fait 25 minutes qu'il essaye de lancer mon fichier java et qu'il n'a toujours rien écrit dans la console, sa viens peu-être de mon code, pourtant tout a l'air bon, eclipse ne me renvois aucune erreurs.

Voici mon code (pas en entier):

        String UrlHttp = "http://";        //début de l'Url
       String UrlSwf = ".swf";            //fin de l'Url
       int i = 0;                         //indice du tableau, ou numéro du résultat
       int UrlDebut = 0;                //indice du caractère du début de l'Url
       int UrlFin = 0;                    //indice du caractère de fin de l'Url, ou dernier caractere analysé
       int nbr= 0 ;                     //nobre de résultat a la recherche
       int taille = source.length();    //nombre de caractere du code source

       while( UrlFin < taille)         //On cherche le nombre de résultat pour déterminer la taille du tableau qui va les stoqué
       {
           UrlDebut=source.indexOf(UrlHttp, UrlFin);
           UrlFin=source.indexOf(UrlSwf, UrlFin);
           nbr ++;
           }    


      System.out.println("Il y à " + nbr + " résultat(s)");
      String [] Urls = new String [nbr] ;            //initialisation du tableau de stockage des Urls trouvé


       while( UrlFin < taille){        //segond recherche et extraction des Urls
           UrlDebut=source.indexOf(UrlHttp, UrlFin);
           UrlFin=source.indexOf(UrlSwf, UrlFin);
           Urls [i]=source.substring(UrlDebut +1,UrlFin);
           System.out.println(Urls[i]);
           i++;
           }

Lien vers le commentaire
Partager sur d’autres sites

Ta premiere boucle while me parait plus que suspecte :

Tu attends tant que urlfin est inferieur a la taille de ta page.

Mais indexof va renvoyer une position inferieure a taille s'il trouve ou -1 s'il ne trouve pas.

Donc en aucun cas une valeur superieure a la taille du texte.

Emmanuel / Alocaly

Lien vers le commentaire
Partager sur d’autres sites

J'ai modifier le code, il marche maintenant, je veux juste vérifier que les URLs trouvé soit valide, mais tu a raison, ma premiere boucle while était infinie.

Voici mon code, il n'est pas définitif, et j'obtiens "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2"

 String UrlHttp = "http://";        //début de l'Url
       String UrlSwf = ".swf";            //fin de l'Url
       int i = 0;                         //indice du tableau, ou numéro du résultat
       int UrlDebut = 0;                //indice du caractère du début de l'Url
       int UrlFin = 0;                    //indice du caractère de fin de l'Url
       int nbr= 0 ;                     //nombre de résultat a la recherche
       boolean boucle = true;            //autorise ou non l'execution des boucles

       while( boucle ) {            //On cherche le nombre de résultat pour déterminer la taille du tableau qui va les stoqué


           UrlFin=source.indexOf(UrlSwf, UrlFin +1);
           UrlDebut=source.lastIndexOf(UrlHttp, UrlFin);
           System.out.println(nbr+ 1 + " résultas");
           if (UrlFin == -1){            //si fin de la source ateinte (ou plus de résultat)
               boucle = false;            // on arrete la boucle pour le prochain tour
           }
           else {
               nbr ++;                        // on compte le nombre de résulats si il est valide
           }
       }
      boucle = true;                         // on ré-authorise l'execution des boucles pour la deuxieme boucle
      System.out.println("Il y à " + nbr + " résultat(s)"); //on affiche le nombre de résultat nbr
      if (nbr < 1){        //si il n'y a pas de résultat

          System.out.println("il n'y a aucun résulatat");
      }else {                     //si il y a au moins 1 résultat

      String [] Urls = new String [nbr] ;            //initialisation du tableau de stockage des Urls trouvé
       while( boucle ){                            //segond recherche et extraction des Urls
           UrlFin=source.indexOf(UrlSwf, UrlFin);
           UrlDebut=source.lastIndexOf(UrlHttp, UrlFin);


           if (UrlDebut                System.out.println("début: " + UrlDebut + " Fin: "+ UrlFin);
               Urls [i]=source.substring(UrlDebut,UrlFin +4); //On stocke les urls (le +4 est là si non les .swf des urls sont coupé) 

Exception a la ligne précédente: "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2".

 
               if (i <= nbr)
                   System.out.println(Urls[i]);
           }

           i++;
           if (UrlFin == -1){         //si on a atein la fin du code source
               boucle = false;        //on arrete la boucle au prochain tours
               }

           }

      }

   } 
} 

Lien vers le commentaire
Partager sur d’autres sites

J'ai utilisé ce tuto: http://developer.android.com/resources/tutorials/views/hello-webview.html pour metre en place une webview mais je n'arrive pas a faire un "page précédente" avec le bouton back. Je n'ai pas compris exactement comment utilisé le code donné, j'ai essayé de le collé a plusieurs endroits mais éclipse me met toujour plusieurs erreur et me fait beaucoup modifier le code:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
   if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
       mWebView.goBack();
       return true;
   }
   return super.onKeyDown(keyCode, event);
}

(chapitre 9. de la page que j'ai donné)

Lien vers le commentaire
Partager sur d’autres sites

Je n'arrive toujours pas a utiliser le bouton retour, mais je ne vois pas ma webview quand il y a un autre LinearLayout avec un bouton dedant:

Code java de mon apli:

package com.TestAndro;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class main extends Activity {
   /** Called when the activity is first created. */
   @Override

   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       WebView mWebView = (WebView) findViewById(R.id.mWebView);

       mWebView = (WebView) findViewById(R.id.mWebView);
       mWebView.getSettings().setJavaScriptEnabled(true);
       mWebView.loadUrl("http://www.google.com/");
       mWebView.setWebViewClient(new HelloWebViewClient());


   }
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {

       if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       //mWebView ne peu pas être résolu
           mWebView.goBack();                                                                                              //sur ces 2 lignes
           return true;
       }
       return super.onKeyDown(keyCode, event);
   }




   private class HelloWebViewClient extends WebViewClient {
       @Override
       public boolean shouldOverrideUrlLoading(WebView view, String url) {
           view.loadUrl(url);
           return true;
       }

   }




}  

Fichier XML de l'UI:

<?xml version="1.0" encoding="utf-8"?>



   android:orientation="vertical"





       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:id="@+id/mWebView"/>


Merci de votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...