2011-04-21 4 views
1

J'ai besoin de lire des éléments d'un fichier HTML. Je les ai chargés depuis webview mais je n'ai pas trouvé le meilleur moyen de les lire.Lire des éléments au format HTML chargé webview Android

code: content_html

package com.android.webview; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.AlertDialog.Builder; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class ViewLink extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final WebView browser = (WebView)findViewById(R.id.browser); 
    /* JavaScript must be enabled if you want it to work, obviously */ 
    browser.getSettings().setJavaScriptEnabled(true); 

    /* Register a new JavaScript interface called HTMLOUT */ 
    browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 

    /* WebViewClient must be set BEFORE calling loadUrl! */ 
    browser.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      /* This call inject JavaScript into the page which just finished loading. */ 
      browser.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 

      /* 
      read elements in content_html 
      */ 
     } 

    }); 


    browser.loadUrl("http://vnexpress.net/gl/rss/"); 
} 

final Context myApp = this; 
Builder builder; 

String content_html; 

/* An instance of this class will be registered as a JavaScript interface */ 
class MyJavaScriptInterface 
{ 
    @SuppressWarnings("unused") 
    public void showHTML(String html) 
    { 
     builder = new AlertDialog.Builder(myApp); 
      builder.setTitle("HTML") 
      .setMessage(html) 
      .setPositiveButton(android.R.string.ok, null) 
     .setCancelable(false) 
     .create() 
     .show(); 
      content_html = html; 
      Log.i("html", html+" "); 
    } 
} 

Répondre

1

Essayez ce qui fonctionne pour moi

class MyJavaScriptInterface 
     { 
      @SuppressWarnings("unused") 
      public void showHTML(String html) 
      { 
       System.out.println("Html...."+html); 
      } 
     } 

En activité

 browser.getSettings().setJavaScriptEnabled(true); 
     browser.getSettings().setPluginsEnabled(true); 
     browser.getSettings().setSupportZoom(true); 
     browser.getSettings().setBuiltInZoomControls(true); 
     browser.setBackgroundColor(Color.TRANSPARENT); 
     browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 
     browser.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      browser.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 
     } 
     }); 
     browser.loadUrl(link); 
+1

J'ai essayé de suivre et cela fonctionne aussi. \t \t \t \t webview.loadUrl ("javascript: alert (document.getElementsByTagName ('html') [0] .innerHTML);"); – Miten

Questions connexes