国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Naive與WebView的互相調用詳解

2019-10-23 18:29:24
字體:
來源:轉載
供稿:網友

Android  Naive與WebView的互相調用詳解

Android的Naive程序是可以嵌套WebView,并且可以做到與WebView的交互,一般來說有兩種方法,一是直接交互,比如,Naive直接調用WebView的方法和WebView直接調用Naive的方法。二是WebView可以寫<a/>超鏈接標簽,然后用戶點擊此標簽時,Naive可以攔截到點擊標簽的事件,這樣,我們可以在鏈接上做一套自己的協議,然后Android和iOS可以根據此協議做出相同的處理,做到多平臺統一。

我們先研究一下Naive和WebView如何相互調用。

    初始化:

mWebView = (WebView) findViewById(R.id.main_wv); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("file:///android_asset/demo.html"); //第一個為交給WebView來進行控制的對象,第二個為控制的對象的變量名,即JS得到此對象后,在為此對象賦名,就可以進行控制了。 mWebView.addJavascriptInterface(this, "naive"); 

  1、Naive直接調用JS方法:

  下面為html中的JS方法  :

function alert(){ document.getElementById("title").innerHTML = "Naive調用Js無參方法"; } 

   naive進行調用,方式為調用WebView的loadUrl方法,方法中傳遞一個String,格式為'javascript:'+'方法名'+'(變量)'

public void onJs(View view) {     mWebView.loadUrl("javascript:alert()"); } 

    有參數JS方法:

function alertWith(arg){ document.getElementById("title").innerHTML = arg; } 

    naive進行有參JS調用:

public void onJsWith(View view) {     mWebView.loadUrl("javascript:alertWith('Naive調用Js有參方法')"); } 

    2、JS調用naive:

      本地先寫好要被調用的方法,注意前面需要加上注解@JavascriptInterface

@JavascriptInterface public void toast() { Toast.makeText(this, "JS調用了Naive的無參方法", Toast.LENGTH_SHORT).show(); } 

      JS調用的代碼:

<input type="button" value="點擊調用naive代碼" onclick="window.naive.toast()"/>

     本地寫好有參的要被調用的方法:

@JavascriptInterface public void toastWith(String toast) { Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); } 

        js調用有參的代碼:

<input type="button" value="點擊調用naive代碼并傳遞參數"     onclick="window.naive.toastWith('JS調用了Naive的有參代碼')"/> 

下面將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, "JS調用了Naive的無參方法", Toast.LENGTH_SHORT).show();   }    @JavascriptInterface   public void toastWith(String toast) {     Toast.makeText(this, toast, Toast.LENGTH_SHORT).show();   }  } 

下面為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> 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宾阳县| 太白县| 紫阳县| 余姚市| 茌平县| 达拉特旗| 桓台县| 澳门| 旬阳县| 南昌市| 泉州市| 汝南县| 罗江县| 诸城市| 乌拉特中旗| 平罗县| 浪卡子县| 咸阳市| 屏南县| 林周县| 响水县| 清苑县| 仙桃市| 礼泉县| 宁南县| 桑日县| 汕尾市| 西乡县| 自治县| 拜泉县| 五常市| 库车县| 文登市| 正阳县| 临漳县| 东乡县| 剑阁县| 佛坪县| 华坪县| 岗巴县| 广东省|