@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的互相调用详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)