Android中Webview與javascript的交互(互相調用)


 

第一步:

加載本地寫好的html文件(定義好js中提供給android調用的方法 funFromjs(),和android提供給js調用的對象接口fun1FromAndroid(String name)),放在 assets目錄下。

 

<body>  

    <a>js中調用本地方法</a>  

    <script>  

      

    function funFromjs(){  

        document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";  

    }  

    var aTag = document.getElementsByTagName('a')[0];  

    aTag.addEventListener('click', function(){  

        //調用android本地方法  

        myObj.fun1FromAndroid("調用android本地方法fun1FromAndroid(String name)!!");  

        return false;  

    }, false);  

    </script>  

    <p></p>  

    <div id="helloweb">   

  

    </div>  

</body>  

 

實現android工程與js交互的相關代碼

android主題代碼:



@Override  

   protected void onCreate(Bundle savedInstanceState) {  

       super.onCreate(savedInstanceState);  

       setContentView(R.layout.activity_main);  

       //初始化  

       initViews();  

  

       //設置編碼  

       mWebView.getSettings().setDefaultTextEncodingName("utf-8");  

       //支持js  

       mWebView.getSettings().setJavaScriptEnabled(true);  

       //設置背景顏色 透明  

       mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));  

       //設置本地調用對象及其接口  

       mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");  

       //載入js  

       mWebView.loadUrl("file:///android_asset/test.html");  

         

       //點擊調用js中方法  

       mBtn1.setOnClickListener(new View.OnClickListener() {  

  

           @Override  

           public void onClick(View v) {  

               mWebView.loadUrl("javascript:funFromjs()");  

               Toast.makeText(mContext, "調用javascript:funFromjs()", Toast.LENGTH_LONG).show();  

           }  

       });  

  

   }  



js調用的android對象方法定義



public class JavaScriptObject {  

    Context mContxt;  

    @JavascriptInterface //sdk17版本以上加上注解  

    public JavaScriptObject(Context mContxt) {  

        this.mContxt = mContxt;  

    }  

  

    public void fun1FromAndroid(String name) {  

        Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();  

    }  

  

    public void fun2(String name) {  

        Toast.makeText(mContxt, "調用fun2:" + name, Toast.LENGTH_SHORT).show();  

    }  

}  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM