2016-12-03 4 views
1

私は自分のサイトを表示するWebViewを持っています。そのサイトに3ページあります。その3ページは、ユーザーが最後のページにいるときに識別する必要があります。そのページを表示するHTMLコンテンツを取得します。Xamarin Android:HTMLコンテンツを取得

WebViewClientを実行して、ユーザーが最後のページにいるときを識別できるようにしました。問題は、パスを移動する方法がわからないことです.HTMLコンテンツを取得する方法がわかりません。そのページから。

namespace WebViewExample 
{ 
    [Activity(Label = "WebView", MainLauncher = true)] 
    public class WebView : Activity 
{ 
    Android.Webkit.WebView web_view; 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     SetContentView(Resource.Layout.WebView); 

     web_view = FindViewById<Android.Webkit.WebView>(Resource.Id.webview); 
     web_view.Settings.JavaScriptEnabled = true; 
     web_view.SetWebViewClient(new MyWebViewClient()); 

     web_view.LoadUrl(url); 
    } 

    public class MyWebViewClient : WebViewClient 
    { 

     public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, string url) 
     { 
      view.LoadUrl(url); 
      return true; 
     } 

     public override void OnPageStarted(Android.Webkit.WebView view, string url, Android.Graphics.Bitmap favicon) 
     { 
      base.OnPageStarted(view, url, favicon); 
     } 

     public override void OnPageFinished(Android.Webkit.WebView view, string url) 
     { 
      base.OnPageFinished(view, url); 
      int i = 0; 
     } 


    } 




} 

}

ありがとう:

これは私がこれまで持っているものです。

答えて

1
  1. あなたのAndroid APIレベル17以降の場合はJavaScript
  2. から呼び出されるメソッドが含まれているAC#クラスを作成し、このクラスは、[JavascriptInterface]とし、[エクスポート]
  3. それぞれのJavaScript呼び出し可能なメソッドに注釈を付ける必要が

    :あなたのWebViewは、ページの読み込みが

を終えたとき、これはコードで呼び出されます)AddJavascriptInterface()メソッド

  • onPageFinished(のメソッドを呼び出す必要があります
    namespace WebViewTest{ 
    [Activity(Label = "WebViewTest", MainLauncher = true, Icon = "@drawable/icon")] 
    public class MainActivity : Activity 
    { 
        Android.Webkit.WebView web_view; 
        protected override void OnCreate(Bundle bundle) 
        { 
         base.OnCreate(bundle); 
         SetContentView(Resource.Layout.Main); 
         web_view = FindViewById<Android.Webkit.WebView>(Resource.Id.webview); 
         web_view.Settings.JavaScriptEnabled = true; 
         web_view.SetWebViewClient(new MyWebViewClient()); 
         web_view.LoadUrl("http://stackoverflow.com/questions/40943265/xamarin-android-get-html-content"); 
         // 3. your WebView must call AddJavascriptInterface() method 
         web_view.AddJavascriptInterface(new InJavaScriptLocalObj(), "local_obj"); 
        } 
    } 
    
    public class MyWebViewClient : WebViewClient 
    { 
        private int count; 
        public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, string url) 
        { 
         view.LoadUrl(url); 
         return true; 
        } 
    
        public override void OnPageStarted(Android.Webkit.WebView view, string url, Android.Graphics.Bitmap favicon) 
        { 
         base.OnPageStarted(view, url, favicon); 
    
        } 
    
        public override void OnPageFinished(Android.Webkit.WebView view, string url) 
        { 
         base.OnPageFinished(view, url); 
         count++; 
         //page count 
         // 4.The method of onPageFinished() will be called when page loading finished 
         if (count == 2) 
         { 
          view.LoadUrl("javascript:window.local_obj.showSource('<head>'+" 
          + "document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 
          count = 0; 
         } 
        } 
    } 
    //1. Create a c# class that contains methods to be called from javaScript. 
    //The Method is that called in javaScript. 
    public sealed class InJavaScriptLocalObj : Java.Lang.Object 
    { 
        //2.if your Android API level 17 or later, 
        //This class must annotate each JavaScript-callable method with [JavascriptInterface] and [Export] 
        [Export] 
        [JavascriptInterface] 
    
        public void showSource(string html) 
        { 
         // System.out.println("====>html=" + html); 
        } 
    } 
    

  • 関連する問題