android webview 怎么更改a标签或者获得里面的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android webview 怎么更改a标签或者获得里面的数据相关的知识,希望对你有一定的参考价值。

Web与html交互分为2个部分:
1、 android端的webview控制,以及数据交互工具类
2、 html页面的javascript
同样,页面交互是双向的,所以有如下两种操作:
1、 通过android应用程序,调用html页面的javascript,完成修改html等操作。
2、 通过html页面javascript调用android端工具类,达到html页面数据回传给android应用处理。

//与html页面交互工具类
util = new WebFormUtil(this, webView);
//webview初始化
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
//允许执行javascript语句
webSettings.setJavaScriptEnabled(true);
//允许允许插件
webSettings.setPluginsEnabled(true);
//html页面大小自适应
webSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
//指定在html页面中,javascript通过调用mtsinfo,来调用util工具类
webView.addJavascriptInterface(util, "mtsinfo");
webView.loadUrl("file://" + UNZIPDIR + "/" + index[indexId]);
//指定webview显示规则
webView.setWebViewClient(new WebViewClientEmb());

public class WebViewClientEmb extends WebViewClient
// 在WebView中而不是系统默认浏览器中显示页面
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return true;

// 页面载入前调用
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
super.onPageStarted(view, url, favicon);

// 页面载入完成后调用
@Override
public void onPageFinished(WebView view, String url)
super.onPageFinished(view, url);

参考技术A android webview加载的是一个html界面,可以在这个界面中编写javascript代码, 通过js来改变界面的元素及内容,数据等.

webapp套用android的webview的壳子.怎么做数据交互呢?能用ajax吗

参考技术A   (1) js调用android的方法:
WebView wView;
wView. addJavascriptInterface (Object obj, String interfaceName);
是实例化一个对象,在html的js中调用,第二个参数是实例化对象的别名,如果要使用这个obj,则在js中使用的名字
  就是interfaceName。
  public class jsWebDemo extends Activity
  WebView wView;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  wView = (WebView)findViewById(R.id.wv1);
  
  WebSettings wSet = wView.getSettings();
  wSet.setJavaScriptEnabled(true);

  ProxyBridge pBridge = new ProxyBridge();
  wView.addJavascriptInterface(pBridge, "AliansBridge");
  
  wView.loadUrl("file:///android_asset/index.html");
  
  
  
  private class ProxyBridge
  public int one ()
  return 1;
  
  
  
  

  来看一下index.html的内容:
  <html>
  <mce:script language="javascript"><!--
  
  /* This function is invoked by the activity */
  function wave()
  alert("1");
  document.getElementById("droid").src="android_waving.png";
  alert("2");
  
  
  // --></mce:script>
  <body>
  <div id="output">Test page.</div>

  <a onClick="window.demo.clickOnAndroid()">
  <div style="width:100px;
  margin:0px auto;
  padding:10px;
  text-align:center;
  border:2px solid #202020;" >
  <img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>
  Click me!
  </div>
  </a>
  <input type="submit" value="change to 1" onclick="document.getElementById('output').innerHTML

  =AliansBridge.one()" />
  </body>
  </html>
  这里的AliansBridge即是调用的JAVA对象。
  要注意的是,如果你只有一个方法需要被js调用只new一个对象就行:
  ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, "AliansBridge");
  如果你需要调用好多个方法,就要把整个android程序所在的类本身实例化传递进去:
  wView.addJavascriptInterface(this, "AliansBridge");
  (2) android调用js的方法:wView.setWebChromeClient (WebChromeClient client)
要用到Handler更新UI,Handler mHandler = new Handler();
  mWebView.setWebChromeClient(new MyWebChromeClient());
  mWebView.addJavascriptInterface(new Object()
  /**
  * This is not called on the UI thread. Post a runnable to invoke
  * loadUrl on the UI thread.
  */
  public void clickOnAndroid()
  
  mHandler.post(new Runnable()
  public void run()
  mWebView.loadUrl("javascript:wave()");
  
  );
  
  , "demo");

  同理,在html中必须有一个名为demo的对象调用clickOnAndroid()方法。

  /**
  * Provides a hook for calling "alert" from javascript. Useful for
  * debugging your javascript.
  */
  final class MyWebChromeClient extends WebChromeClient
  @Override
  public boolean onJsAlert(WebView view, String url, String message,
  JsResult result)
  result.confirm();
  return super.onJsAlert(view, url, message, result);
  
  本回答被提问者和网友采纳

以上是关于android webview 怎么更改a标签或者获得里面的数据的主要内容,如果未能解决你的问题,请参考以下文章

android怎么加载html

Android中webview加载页面有重叠,是怎么回事

H5调用本地相册/相机上传图片

webview页面导航与android原生导航重叠怎么办

android webview 加载url有延迟怎么办,有没有比wenview更好的第三方控件

请问打游戏要不要开这个多进程webview,或者其他怎么样