動態獲取WebView中的數據

在安卓中顯示html頁面可以使用WebView控件,那么如何從WebView中動態地獲取到數據呢。其實很簡單。先上效果圖

WebView中嵌入的范圍選擇器
Android Log中實時獲取到了數據

第一步:自定義一個類,它的方法的參數是從js中獲取的數據,方法體是Android對數據做的處理。

class JavaInJS {   
  @android.webkit.JavascriptInterface    
   public void showHeight(String html) {       
      Log.e("data", "height: " + html);   
  }    
 
  @android.webkit.JavascriptInterface   
   public void showAge(String html) {        
       Log.e("data", "age: " + html);    
   }
}

第二步:給webView添加addJavascriptInterface方法。 給它傳兩個參數,一個是剛才寫的類的實例,一個是這個類的實例名,這個名字會在js代碼中被用到

View contextView = inflater.inflate(R.layout.fragment_info_love,container,false); 
webView = (WebView) contextView.findViewById(R.id.fragment_info); 
webView.getSettings().setJavaScriptEnabled(true); 
//JavaInJS是自己寫的一個類, "javaInJS"是JS中這個類的實例名
webView.addJavascriptInterface(new JavaInJS(), "javaInJS" ); 
//這句也是必須的
webView.setWebChromeClient(new WebChromeClient(){}); 
webView.loadUrl("file:///android_asset/love_setting.html");

第三步:在JS代碼中調用第一步中寫的方法
當選擇器滑動的時候會觸發onstatechange方法,我在onstatechange方法中調用
window.在第二步中起的實例名.方法(需要傳的數據)
就搞定啦!

    $('#height-slider').jRange({
                from: 140,
                to: 220,
                step: 1, 
                format: '%s',
                width: 300,
                showLabels: true,
                showScale: false,
                isRange : true,
                theme: "theme-blue",
                onstatechange: function(){
                    $('#heightR').html($('#height-slider').val().replace(',',' - '));
                    //在js中調用java代碼,傳數據
                    window.javaInJS.showHeight($('#heightR').html());
                }
            });

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容