webview加载网络数据显示
2015-03-16 20:26
148 查看
[code] //uri地址 private String url = "http://sns.maimaicha.com/api?apikey=b4f4ee31a8b9acc866ef2afb754c33e6&format=json &method=news.getNewsContent&id=7267"; webview=(WebView) this.findViewById(R.id.webview); //1.得到WebView的设置对象 WebSettings webSettings=this.webview.getSettings(); //2.启用WebView的缩放功能 webSettings.setBuiltInZoomControls(true); //设置支持JavaScript语言 mWebView.getSettings().setJavaScriptEnabled(true); //加载指定路径 webview.loadUrl(url); //设置使用本webview打开网络链接 webview.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; //返回有效 } }); //开启线程,加载数据 new Thread(new Runnable() { @Override public void run() { HttpClient client=new DefaultHttpClient(); HttpGet get=new HttpGet(url); HttpResponse response=null; HttpEntity entity=null; try { response=client.execute(get); if(response.getStatusLine().getStatusCode()==200){ entity=response.getEntity(); String json=EntityUtils.toString(entity); JSONObject obj=new JSONObject(json); obj=obj.getJSONObject("data"); //获取json字符串,其中包含html标签 final String content=obj.optString("wap_content"); webview.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // (content为html文本) webview.loadDataWithBaseURL(null, content,"text/html", "utf-8", null); } }); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start();
注:
在android中,服务端可以调用客户端编写的java代码:
在android客户端:
[code]public final class JSObject{ /** * 供服务器端使用javascript回调的客户端方法 * @param userName 用户名(从服务器端传递过来的实参值传递给当前形参) * @param pwd 密码(从服务器端传递过来的实参值传递给当前形参) * @return 返回的结果 */ @JavascriptInterface//注解,表示本方法对外暴露,让服务器端的javascript调用的 public String getMessage(String userName,String pwd){ String result=userName+":"+pwd; System.out.println("result="+result); return result; } }
然后对webview进行设置:
[code] //1.启用WebView对象javaScript语言的支持 webSettings.setJavaScriptEnabled(true); //2. 注册Java对象和javascript进行沟通的对象和别名(是在javascript中使用的) this.webView.addJavascriptInterface(new JSObject(), "jsObject"); //执行 this.webView.loadUrl(url);
在服务端:js代码
[code]function doSubmit(){ var frm=document.frm; if(frm.text_userName.value==""){ alert("请输入用户名!"); frm.text_userName.focus(); return false; } frm.text_pwd.focus(); if(frm.text_pwd.value==""){ alert("请输入密码!"); return false; } var userName=frm.text_userName.value; var pwd=frm.text_pwd.value; //javascript调用Java代码 var result=jsObject.getMessage(userName,pwd); alert("result="+result); return true; } </script>
客户端处理:
[code] //注册服务器端回调接口对象 webView.setWebChromeClient(new WebChromeClient(){ //处理alert弹出框的方法 @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { Builder builder=new Builder(MainActivity.this); builder.setTitle("提示信息"); builder.setMessage(message); builder.setPositiveButton("确定",new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //弹出javascript确认对话框 result.confirm(); } }); builder.create().show();
相关文章推荐
- WebView 加载数据时显示进度条,加载完后再把进度条取消并显示内容
- TabLayout +ViewPager + Fragment : RecyclerView展示网络数据 + webView 显示网页
- WebView加载网页-进度显示-网络上传图片并压缩
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- 安卓Webview缓存网页数据(无网络正常显示)
- xUtils 获取网络数据 + RecycleView 显示数据+ F resco 加载图片 + ButterKnife 初始化控件
- Android中WebView拦截替换网络请求数据
- android中的webview加载网页只想显示部分内容改怎么做
- 异步加载网络数据,自定义进度条显示
- Android webView加载数据时内存溢出问题
- Volley下载数据显示在RecyclerView上 需要注册和添加网络权限
- DataBinding结合RecyclerView动态加载网络数据
- Android 使用WebView加载含有echarts的页面,截图不显示的解决方式
- WebView加载进度Progress的显示
- Webview--如何让加载进来的页面自适应手机屏幕分辨率居中显示
- webView在5.0以上手机加载网页不显示图片
- Android webview里加载显示网页,显示进度,点击网页链接跳转到app页面
- android中WebView加载网页居中显示
- Android开发模板------WebView加载时显示ProgressBar进度条