AndroidNaive与WebView的互相调用详解

AndroidNaive与WebView的互相调用详解,第1张

概述Android Naive与WebView的互相调用详解Android的Naive程序是可以嵌套WebView,并且可以做到与WebView的交互,一般来说有两种方法,一是直接交互,比如,Naive直接调用WebView的方法和WebView直接调用Naive的方 @H_502_0@AndroID  Naive与WebVIEw的互相调用详解

@H_502_0@AndroID的Naive程序是可以嵌套WebVIEw,并且可以做到与WebVIEw的交互,一般来说有两种方法,一是直接交互,比如,Naive直接调用WebVIEw的方法和WebVIEw直接调用Naive的方法。二是WebVIEw可以写<a/>超链接标签,然后用户点击此标签时,Naive可以拦截到点击标签的事件,这样,我们可以在链接上做一套自己的协议,然后AndroID和iOS可以根据此协议做出相同的处理,做到多平台统一。

@H_502_0@我们先研究一下Naive和WebVIEw如何相互调用。

@H_502_0@    初始化:

mWebVIEw = (WebVIEw) findVIEwByID(R.ID.main_wv); mWebVIEw.getSettings().setJavaScriptEnabled(true); mWebVIEw.loadUrl("file:///androID_asset/demo.HTML"); //第一个为交给WebVIEw来进行控制的对象,第二个为控制的对象的变量名,即Js得到此对象后,在为此对象赋名,就可以进行控制了。 mWebVIEw.addJavaScriptInterface(this,"naive"); 
@H_502_0@  1、Naive直接调用Js方法:

@H_502_0@  下面为HTML中的Js方法  :

function alert(){ document.getElementByID("Title").INNERHTML = "Naive调用Js无参方法"; } 
@H_502_0@   naive进行调用,方式为调用WebVIEw的loadUrl方法,方法中传递一个String,格式为'JavaScript:'+'方法名'+'(变量)'

public voID onjs(VIEw vIEw) {     mWebVIEw.loadUrl("JavaScript:alert()"); } 
@H_502_0@    有参数Js方法:

function alertWith(arg){ document.getElementByID("Title").INNERHTML = arg; } 
@H_502_0@    naive进行有参Js调用:

public voID onjsWith(VIEw vIEw) {     mWebVIEw.loadUrl("JavaScript:alertWith('Naive调用Js有参方法')"); } 
@H_502_0@    2、Js调用naive:

@H_502_0@      本地先写好要被调用的方法,注意前面需要加上注解@JavaScriptInterface

@JavaScriptInterface public voID toast() { Toast.makeText(this,"Js调用了Naive的无参方法",Toast.LENGTH_SHORT).show(); } 
@H_502_0@      Js调用的代码:

<input type="button" value="点击调用naive代码" onclick="window.naive.toast()"/>
@H_502_0@     本地写好有参的要被调用的方法:

@JavaScriptInterface public voID toastWith(String toast) { Toast.makeText(this,toast,Toast.LENGTH_SHORT).show(); } 
@H_502_0@        Js调用有参的代码:

<input type="button" value="点击调用naive代码并传递参数"     onclick="window.naive.toastWith('Js调用了Naive的有参代码')"/> 
@H_502_0@下面将Activity的源代码贴出来; 

public class MainActivity extends AppCompatActivity {    private WebVIEw mWebVIEw;    @OverrIDe   protected voID onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentVIEw(R.layout.activity_main);      mWebVIEw = (WebVIEw) findVIEwByID(R.ID.main_wv);     mWebVIEw.getSettings().setJavaScriptEnabled(true);     mWebVIEw.addJavaScriptInterface(this,"naive");     mWebVIEw.loadUrl("file:///androID_asset/demo.HTML");    }     public voID onjs(VIEw vIEw) {     mWebVIEw.loadUrl("JavaScript:alert()");   }    public voID onjsWith(VIEw vIEw) {     mWebVIEw.loadUrl("JavaScript:alertWith('Naive调用Js有参方法')");   }     @JavaScriptInterface   public voID toast() {     Toast.makeText(this,Toast.LENGTH_SHORT).show();   }    @JavaScriptInterface   public voID toastWith(String toast) {     Toast.makeText(this,Toast.LENGTH_SHORT).show();   }  } 
@H_502_0@下面为HTML的代码:

<HTML> <head>   <Meta http-equiv="Content-Type" content="text/HTML;charset=gb2312">   <script type="text/JavaScript">     function alert(){        document.getElementByID("Title").INNERHTML = "Naive调用Js无参方法";     }     function alertWith(arg){        document.getElementByID("Title").INNERHTML = arg;     }    </script> </head> <body> <h1 ID="Title"></h1><br/> <input type="button" value="点击调用naive代码" onclick="window.naive.toast()"/><br/> <input type="button" value="点击调用naive代码并传递参数"     onclick="window.naive.toastWith('Js调用了Naive的有参代码')"/> </body> </HTML> 
@H_502_0@感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

以上是内存溢出为你收集整理的Android Naive与WebView的互相调用详解全部内容,希望文章能够帮你解决Android Naive与WebView的互相调用详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1146271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存