android WebView java与js相互调用

android webView js 使用
1、js调用java
    1、1 js代码
    <script type="text/javascript">
        function call(){
            window.androidInterface.call(‘02585818031‘);
        }
    </script>

1.2、java代码
    package com.example.webview;
    import android.annotation.SuppressLint;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.Window;
    import android.webkit.JavascriptInterface;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    @SuppressLint("JavascriptInterface")
    public class MainActivity extends ActionBarActivity {
    
        private WebView webView;
        private int screenHeight;
        private int screenWidth;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无标题
            setContentView(R.layout.activity_main);
    
            webView = (WebView) findViewById(R.id.web_view);
            WebSettings webSettings = webView.getSettings();
            webSettings.setBuiltInZoomControls(true);
            webSettings.setLoadWithOverviewMode(true);
            webSettings.setJavaScriptEnabled(true);
            
            webView.setWebViewClient(new MyWebViewClient());
            webView.addJavascriptInterface(new MyAndroidInterface(), "androidInterface");
            
            String url ="file:///android_asset/tangbangjidian/fuwu.html";  
            //String url ="file:///android_asset/baitian/index.html";  
            webView.loadUrl(url);
        }
    
       class MyAndroidInterface{
            
            public MyAndroidInterface(){};
            
            @JavascriptInterface //注意:加上这行注解
            public void call(String number){
                //用intent启动拨打电话  
                Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number));  
                startActivity(intent);
            }
        }
        
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {  
                webView.goBack(); //goBack()表示返回WebView的上一页面  
                return false;  
            }  
            return true;
        }
        
        private class MyWebViewClient extends WebViewClient{
            @Override  
            public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                view.loadUrl(url);// 当打开新链接时,使用当前的 WebView,不会使用系统其他浏览器  
                return true;  
            }
        }
        
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    }

2、java 调用js
    2.1、java代码,webView为WebView对象
          // 无参数调用  
        webView.loadUrl("javascript:javacalljs()");  
        // 传递参数调用  
        webView.loadUrl("javascript:javacalljswithargs(" + "‘hello world‘" + ")");  
    2.2、js代码
    function javacalljs(){  
     document.getElementById("content").innerHTML +=     
         "<br\>java调用了js函数";  
    }  
      
    function javacalljswithargs(arg){  
         document.getElementById("content").innerHTML +=     
             ("<br\>"+arg);  
    }

时间: 2024-10-13 05:36:57

android WebView java与js相互调用的相关文章

如何在android平台上使用js直接调用Java方法[转]

转载自:http://www.cocos.com/docs/html5/v3/reflection/zh.html #如何在android平台上使用js直接调用Java方法 在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parame

java和bat相互调用

1.bat 启动java main函数 1.将project导出JAR,过程中注意选择main class 2.新建bat,设置环境变量 3.1启动程序,如果想在黑窗口中打印数字,可以system.out,程序运行万 @echo off @setlocal set JAVA_HOME=jdk1.6.0_25 set PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin java -jar start.jar 或者直接调用class文件 @echo off @setlo

关于action script与js相互调用的Security Error问题

大家都知道,as和js相互调用可以通过ExternalInterface.call和ExternalInterface.addCallback来进行. 比较好的做法是使用之前通过ExternalInterface.available来检测一下是否可用. 然而被坑了的是,这个ExternalInterface.available并不检测安全限制,也就是即使ExternalInterface.available=true,还是可能报错. 为了防止报错阻断程序正常运行,还需要再包一层try catch

php与js相互调用

2019-2-3 php与js相互调用<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><script type="text/javascript"> function test() { var t1=3; t1 = t1+2; alert(t1); return t1; } </script> <?php $name='J

android webView开发之js调用java代码示例

1.webView设置 webView.getSettings().setJavaScriptEnabled(true);//设置支持js webView.addJavascriptInterface(new JsOperation(),"client");//设置js调用的java类 2.声明js要调用java类 class JsOperation { // 测试方法 @JavascriptInterface//这句标识必须要写上否则会出问题 public void test(Str

WebView使用详解(一)——Native与JS相互调用(附JadX反编译)

前言:念念不忘,必有回响,永远坚持你所坚持的! 一直在用WebView,还没有系统的总结过它的用法,下面就系统的总结下,分享给大家 一.基本用法 1.加载在线URL void loadUrl(String url) 这个函数主要加载url所对应的网页地址,或者用于调用网页中的指定的JS方法(调用js方法的用法,后面会讲),但有一点必须注意的是:loadUrl()必须在主线程中执行!!!否则就会报错!!!.注意:加载在线网页地址是会用到联网permission权限的,所以需要在AndroidMan

【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法

在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...) 在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回

cocos js js java互调 (如何在ANDROID平台上使用JS直接调用JAVA)

在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...) 在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回

Android WebView Java和JavaScript交互

Java调用JavaScript mWebView.loadUrl("javascript:toast()"); js: <script language="javascript> <!--提供给android的java代码调用--> function toast(){ alert("fdsaf") } JavaScript调用Java WebView提供了一个名为WebSetting的工具类来实现让WebView中的JavaScr