2016-08-30 2 views
0

내 코드에. 웹 페이지를로드 할 때 생성 된 소스 코드 (HTML 문서)를 가져 오려고합니다. onPageFinished() 함수는 코드를 가져 오기위한 view.loadUrl ("javascript : (function() {document.getElementByTagName ('html') [0] .innerHTML");을 작성했지만 "[INFO : CONSOLE (1)] "Uncaught SyntaxError : 예상치 못한 입력의 끝", source : (1) ". 웹 페이지가 올바르게 표시됩니다. 소스 코드 웹 페이지를 가져오고 싶습니다. 소스 코드를 가져 와서 표시하는 방법은 무엇입니까?안드로이드 브라우저에서 HTML 문서를 문자열로 가져 오는 방법

내 코드는 다음과 같습니다 어떻게 가능 : 다음 당신이 원하는대로 할

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ProgressBar; 



public class MainActivity extends Activity { 

WebView web1; 
EditText ed1; 
Button bt1; 
String Address; 
String add; 
ProgressBar pbar; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    web1 = (WebView)findViewById(R.id.webView1); 
    ed1 = (EditText)findViewById(R.id.editText1); 
    bt1 = (Button)findViewById(R.id.button1); 
    pbar = (ProgressBar)findViewById(R.id.progressBar1); 
    pbar.setVisibility(View.GONE); 

    bt1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Address = "http://" + ed1.getText().toString(); 
      WebSettings webSetting = web1.getSettings(); 
      webSetting.setBuiltInZoomControls(true); 
      webSetting.setJavaScriptEnabled(true); 
      webSetting.setDomStorageEnabled(true); 

      web1.setWebViewClient(new WebViewClient()); 

      web1.loadUrl(Address); 

     } 
    }); 
} 

public class WebViewClient extends android.webkit.WebViewClient 
{ 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 

     // TODO Auto-generated method stub 
     super.onPageStarted(view, url, favicon); 
     pbar.setVisibility(View.VISIBLE); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     // TODO Auto-generated method stub 
     return true; 
    } 
    @Override 
    public void onPageFinished(WebView view, String url) { 

     // TODO Auto-generated method stub 

     super.onPageFinished(view, url); 
     pbar.setVisibility(View.GONE); 
     view.loadUrl("javascript:(function() { document.getElementByTagName('html')[0].innerHTML"); 
    } 

} 

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

답변

0

는이 같은 웹 페이지의 텍스트를 얻을 수에 :

public class HTMLPageDownloader extends AsyncTask<Void, Void, String> { 
     public static interface HTMLPageDownloaderListener { 
      public abstract void completionCallBack(String html); 
     } 
     public HTMLPageDownloaderListener listener; 
     public String link; 
     public HTMLPageDownloader (String aLink, HTMLPageDownloaderListener aListener) { 
      listener = aListener; 
      link = aLink; 
     } 

     @Override 
     protected String doInBackground(Void... params) { 
      // TODO Auto-generated method stub 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet request = new HttpGet(link); 
      String html = ""; 
      try { 
       HttpResponse response = client.execute(request); 
       InputStream in; 
       in = response.getEntity().getContent(); 
       BufferedReader reader = new BufferedReader(
         new InputStreamReader(in)); 
       StringBuilder str = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
        str.append(line); 
       } 
       in.close(); 
       html = str.toString(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return html; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 
      if (!isCancelled()) { 
       listener.completionCallBack(result); 
      } 
     } 
    } 
+0

소스 코드를 다시 작성하고 브라우저에서 실행하고 싶습니다. 예를 들어 웹 페이지에서 전화 번호를 감지 한 다음 코드를 다시 작성하여 전화 번호를 강조 표시하려고합니다 (예 : skype click to call). 이 코드에서 가능합니까? –

+0

나는 당신의 목적이 정확히 무엇인지 알지 못한다. – khakishoiab

+0

내 브라우저에서 웹 사이트의 URL을 입력 할 때. 페이지가로드 될 때, 페이지는 HTML 코드를 재 작성하거나 재 설계해야합니다. (Skype Click to Call 기능에서는 페이지의 전화 번호를 감지하고 페이지의 전화 번호를 재 설계 할 수 있습니다). 명백합니까? –