精华内容
下载资源
问答
  • Android javascript 交互 Android混合开发之WebView与Javascript交互
  • Android和JS交互

    2016-02-19 15:49:18
    Android和JS交互,其中涉及到Android程序调用js方法以及js调用Android程序方法
  • 主要介绍了Android和JavaScript相互调用的方法,实例分析了Android的WebView执行JavaScriptJavaScript访问Android的技巧,需要的朋友可以参考下
  • 用Java代码调用WebView中的js函数、也可以用WebView中的js来调用Android应用中的Java代码,有无参数,有无返回值,包含多种实现方式。
  • android和js相互调用

    2017-11-09 14:26:31
    android和js相互调用

    项目中首页本来是android原生的,后来因为经常改动界面,修改布局,尤其是布局没有事先考虑好,如果用原生的android来开发需要频繁的发包,当然如果事先知道所有布局样式也可以先定义好几套模板,或者通过热修复技术也可以解决。后经过讨论把首页改成h5然后点击h5页面给我们传递参数,我们把js给我们的值传递给自己原生的界面,这样即使首页界面需要小调整我们也不需要发布。如果界面中有刷新或者加载更多,就需要android去调用js的方法,下面简单说下这两种是如何调用:


    先给大家介绍一个封装比较好的webview:https://github.com/Justson/AgentWeb

    还有腾讯的VasSonic:https://github.com/Tencent/VasSonic (专注提升h5首屏加载速度)

    如果大家对以上比较感兴趣的可以参考:AgentWeb+VasSonic实现h5首页加速

    如果只是想了解android和js是如何交互的请直接向下



    最常见的是js调用android方法,js代码

    function callAndroid(){
    	nativeMethod.pointsListLoaded("js传递给android的一个json字符串");
    }


    那android端该如何支持呢

    如果网页是https的,请参考这里:http://blog.csdn.net/qq_33220645/article/details/76906396

    如果有databinding不清楚的可以参考这里:http://blog.csdn.net/qq_33220645/article/details/76080898

    http://blog.csdn.net/qq_33220645/article/details/76084532


    //启用支持javascript
            WebSettings settings = bindingView.mwebview.getSettings();
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);//https加载WebView图片不显示问题
            }
            settings.setJavaScriptEnabled(true);
            bindingView.mwebview.loadUrl(url);
            bindingView.mwebview.getSettings().setDomStorageEnabled(true);
            /**
             * 让webview长按不能复制
             */
            bindingView.mwebview.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    return true;
                }
            });
            /**
             * 信任证书
             */
            bindingView.mwebview.setWebViewClient(new WebViewClient() {
                @Override
                public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                    handler.proceed();//https的网页需要安装证书,或者信任证书才能访问
    //                super.onReceivedSslError(view, handler, error);
                }
    
                @Override
                public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                    super.onReceivedError(view, request, error);
    //                showError();
                }
            });
    //        webView.getSettings().setDatabaseEnabled(true);
            //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
    
            //优先使用缓存
    //        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
            //不使用缓存
            bindingView.mwebview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
            bindingView.mwebview.addJavascriptInterface(new ClickResult(), "nativeMethod");


    /**
         * js点击事件处理
         */
    private class ClickResult {  
            /**
             * 积分明细数据加载完成
             *
             * @param result
             * @return
             */
            @JavascriptInterface
            public String pointsListLoaded(String result) {//如果什么参数都不需要传递给android可以随便传递一个参数,android不拿就好否则会报错
                analysisJson(result);//解析js传递的result跳转页面
                return null;
            }
    }





    下面是android数据加载完成告诉js数据加载完成,或者界面中有分页加载,需要加载下一页调用js方法

    android代码如下:

    bindingView.mwebview.loadUrl("javascript:getPointsList("android给js传递的值")");

    js代码:

    function getPointsList(param) {
    	alert(param);
    	document.getElementById('fromJS').innerHTML="我是android调用JS的方法";
    	showToast();
    	document.getElementById('fromJS').innerHTML=param;
    				
    }


    当然js可以把所有方法放到本地集合中


    那android也应该配合调用:

    bindingView.mwebview.loadUrl("javascript:javascriptMethods.getPointsList()");

    webview相关属性设置解释:



    参考文章:http://blog.csdn.net/jdsjlzx/article/details/51376739

    http://blog.csdn.net/Master_Miku/article/details/54913628

    展开全文
  • android js 之间交互的封装

    HybridBridge

    项目地址: YouJZ/HybridBridge
    简介:android 和 js 之间交互的封装
    更多: 作者    提 Bug   
    标签:
    webview- js- android 和 js 之间交互的封装-

    A basic framework for Android hybrid development, bridge between JavaScript and java.demo

    use in android

    Adding to project

    compile 'com.zyj:hybridbridge:0.1.0'
    

    step.1

    webView.loadUrl("you url");
    JsBridge.getInstance().init(this, webView);
    

    step.2

    public class JsDeviceInfo extends JsAction {
      public static final String ACTION = "deviceinfo";
      @Override
      protected void handleAction(Activity context, String jsonStr) {
        HandleResult resultEntity =new HandleResult();
        ...
        resultEntity.setData(...);
        RxBus.getInstance().post(resultEntity);
      }
     }
    JsBridge.getInstance().addJsAction(JsDeviceInfo.ACTION, JsDeviceInfo.class);
    

    step.3

     JsBridge.getInstance().destroy();
    

    use in js

    step.1

    window.nativeCallback = function(data) {...}
    

    step.2

    var Senddata={
            action:"deviceinfo",
            callback:"nativeCallback",
            data:data,
        }
    

    step.3

    window.native.sendMessage(sendDataStr);
    展开全文
  • Android和js进行交互

    2016-02-19 13:40:07
    以前知道Android可以和js进行交互,但是一直没有用过,这一次项目中有和js进行交互的需求,所以就研究了一下,下面将会介绍Android程序调用js方法以及js调用Android程序方法。
     
    

    以前知道Android可以和js进行交互,但是一直没有用过,这一次项目中有和js进行交互的需求,所以就研究了一下,下面将会介绍Android程序调用js方法以及js调用Android程序方法。我们只需要几步就可以搞定了,废话不说,走起!!!

    第一步:编写相关的html文件demo.html,其中updateHtml()方法是Android程序调用html中js的方法,startFunction()是js调用Android程序的方法,把这个html文件放在assets文件夹下

    <html>
    <head>
    <script type="text/javascript">
    function updateHtml(){
    	 document.getElementById("content").innerHTML =   
             "你通过 android 中的控件调用了html 中js 的方法";
    	alert("dialog");
    }
    
    </script>
    </head>
    <body>
    this is my html <a onClick="window.login.startFunction()" href="";>调用java中个的方法</a>
    <span id="content"></span>
    </body>
    </html>

    第二步:创建一个 接口,让 html 页面调用

    	public class HtmlCallJava {
    		public void startFunction() {
    			AlertDialog.Builder ab = new AlertDialog.Builder(MainActivity.this);
    			ab.setTitle("提示");
    			ab.setMessage("通过 js 调用了 java 中的方法");
    			ab.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    				@Override
    				public void onClick(DialogInterface dialog, int which) {
    					dialog.dismiss();
    				}
    			});
    			ab.create().show();
    		}
    	}

    第三步:代码中对webview进行相应的配置,其中包括向webview注入一个接口,让js调用Android程序的方法


    <span style="white-space:pre">	</span>@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		// 获取webView 控件
    		final WebView webview = (WebView) findViewById(R.id.webview);
    		// 加上这句话才能使用javascript方法
    		webview.getSettings().setJavaScriptEnabled(true);
    		webview.getSettings().setDefaultTextEncodingName("gbk");
    		// 加载assets目录下面的demo.html 界面
    		webview.loadUrl("file:///android_asset/demo.html");
    		Button button = (Button) findViewById(R.id.button); // 获取button控件
    															// 即"调用html中的js方法"
    															// 按钮
    		// 给button添加事件响应,执行JavaScript的fillContent()方法
    		button.setOnClickListener(new Button.OnClickListener() {
    			public void onClick(View v) {
    				Log.d("MainActivity", "button OnClick");
    				webview.loadUrl("javascript:updateHtml()");
    			}
    		});
    
    		// 增加接口方法,让html页面调用
    		webview.addJavascriptInterface(new HtmlCallJava(), "login");
    	}

    其中在向 addJavascriptInterface(Object object , String name )注入接口的时候,需要注意的是name,name应该是html中对应的name。例如:



    打完收工!!!


    项目下载


    展开全文
  • Android和js代码互相调用

    千次阅读 2017-01-19 10:21:07
    Android和js代码互相调用

    在js中,有如下代码:

    <script>
        //js调用安卓
      function sendDataToAndroid(){
        //调用android程序中的方法,并传递参数。
        var name = document.getElementById("name_input").value;
        //注意这里的AndroidWebView和方法名chen
        window.AndroidWebView.chen(name);
      }
    
      //在android代码中调用js代码
      function dataFromAndroid(msg){
        alert("来自安卓的信息:"+msg);
      }
      </script>

    1、在js中调用安卓的话,安卓中写法:

    webView.addJavascriptInterface(new JsInterface_2(context), "AndroidWebView");
    private class JsInterface_2 {
            private Context mContext;
    
            public JsInterface_2(Context context) {
                this.mContext = context;
            }
    
            //在js中调用window.AndroidWebView.chen(name),便会触发此方法。
            @JavascriptInterface
            public void chen(String name) {
                Log.e("name==" ,name);
            }
        }

    2、安卓调用js中方法,给js传值
    注:这个方法要等网页加载完,才有效。所以,要么在网页加载完的监听里调用,要么,写一个点击事件,等加载完了点击调用

    传单个值及多个值,见注释

     //网页返回键的处理
            webView.setOnKeyListener(new View.OnKeyListener() {
    
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if (event.getAction() == KeyEvent.ACTION_DOWN) {
                        if (keyCode == KeyEvent.KEYCODE_BACK) {  //表示按返回键时的操作
                            if (webView.canGoBack()) {
                                webView.goBack();   //后退
                            } else {
                            //所在activity销毁
                                finish();
                            }
                            return true;   //已处理
                        }
                    }
                    return false;
                }
            });
    
    
            webView.setWebViewClient(new MyWebViewClient());
            webView.setWebChromeClient(new MyChromeClient());
    private class MyChromeClient extends WebChromeClient {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
    
                super.onProgressChanged(view, newProgress);
            }
    
            @Override
            public void onReceivedTitle(WebView view, String title) {
                // TODO Auto-generated method stub
                super.onReceivedTitle(view, title);
    
                LogU.i("网页title-----" , title);
    
            }
        }
    // webview设置的代理类
        private class MyWebViewClient extends WebViewClient {
    
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
    
                return super.shouldOverrideUrlLoading(view, url);
    
            }
    
            @Override
            public void onPageFinished(WebView view, String url) {
                view.getSettings().setJavaScriptEnabled(true);
                super.onPageFinished(view, url);
                Log.i("详情页加载完成-----" , url);
    
                //调用js中的代码,给网页传用户id
                //传多个值的方法。注意单引号的配对
                //webView.loadUrl("javascript:dataFromAndroid('" + userInfo.getUserId()+"','"+userInfo.getUserId() + "')");
                //传单个值
                webView.loadUrl("javascript:dataFromAndroid('" + userInfo.getUserId() + "')");
    
            }
    
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                Log.i("详情页开始加载-----" ,url);
                super.onPageStarted(view, url, favicon);
            }
    
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Log.i("详情页加载异常-----" , failingUrl);
    
                super.onReceivedError(view, errorCode, description, failingUrl);
    
            }
        }
    展开全文
  • 由于最近接触cordova开发,也就是webapp的开发,这是一种基于h5的一种开发的模式,也就是在原生态android和h5的混合开发。由于h5开发的速度比原生态的...代码学习在学习cordova之前呢,必须要先了解最基本的android和js
  • 浅谈android和js的交互问题

    千次阅读 2016-09-22 16:31:40
    这么做的好处就是减少开发成本 ,一套html在android ,ios及web都可以跑。节省了很多开发成本。...所以下面给大家说一下android和js怎么实现交互(android调用js中的方法,js里面调用android的方法)。 一
  • Android和js的相互调用

    千次阅读 2012-12-17 16:53:06
    原理是java和js的项目调用,但是在android系统中是通过webview实现的..所以我下边就叫android和js的相互调用.为了区别出它的用处,android系统下. webview在2.3系统中,当js回调java函数并传参数的时候,会报错,导致JNI...
  • Android和js交互,选择照片

    千次阅读 2016-08-12 13:39:03
    Android和js交互,选择照片android 的webview和js相互调用 - 1.html代码 html中有个img标签,用来显示图片&amp;lt;!DOCTYPE html &amp;gt; &amp;lt;html&amp;gt; &amp;lt;head&amp;gt; ...
  • Android JS 交互时调用不成功的问题 具体如何交互,网上已经有很多资料,这里默认在已知如何交互的情况下,对几个重要的关键点进行强调。1、webView.getSettings().setJavaScriptEnabled(true);设置WebView支持...
  • android中webview和js交互 android中利用webview调js webview.getSetting().setJavaScriptEnable(true); webview.loadUrl("javaScript:text()"); 网页上调用androidjs的方法 webview....
  • 本篇将介绍WebView中Android原生Js之间交互。以及它们之间通信桥梁JsBridge。 1.Android调用JS Android调用JS有两种方法,第一种是通过loadUrl()方法,第二种是通过evaluateJavascript()。 1-1.loadUrl()示例 ...
  • 我想在Android的原生页面获取到HTML5页面中的显示的字段然后先原生显示出来,用什么方法
  • android和js交互实例

    2016-03-07 14:28:58
    (1)、两者交互的方法 WebView.addJavascriptInterface(Object object, String ...2、JS端alert出android传过来的参数 “content to js!” 3、JS端调用android方法1 4、JS端处理android传参并调用android方法2 完
  • Android和js通信

    2014-10-23 15:51:57
    Android中可以通过webview加载html来显示界面,那ht
  • 代码在Android Studio1.4, android的6.0的模拟器上测试没有问题,Android中的java方法和js方法互相调用,根据有参无参,可以分为四种情况,以下逐一通过代码分析。java方法和js方法互相调用的前提是需要设置...
  • 文章来自: ...相比android和js进行交互,ios和js进行交互是比较方便的; android和js进行交互,请看这里: http://blog.csdn.net/intbird/article/details/42295453 android和js进行交互框架,看这里: ...
  • Android JS 交互时调用不成功的问题 具体如何交互,网上已经有很多资料,这里默认在已知如何交互的情况下,对几个重要的关键点进行强调。 1、webView.getSettings().setJavaScriptEnabled(true);设置WebView支持...
  • Android和javascript之间交互,javascript需要运行在浏览器或者Android的WebView组件,javascript 必须还有载体html文件,这个html文件 放到Android项目assets文件夹下面。 首先我把我把代码先贴出来: ...
  • demo实现webView加载本地html网页,且实现原生和js之间的交互
  • 一、交互:android和js的交互,android调用js很简单,一句话webView.loadUrl("javascript:webShow(‘ " + msg + "')");//webShow为web端定义的方法,msg为传入的值,注:必须有单引号转义才能传入 js调用android...
  • android和js互相调用方法

    千次阅读 2018-06-28 18:19:17
    js中,有如下代码:&lt;script&gt; //js调用安卓 function sendDataToAndroid(){ //调用android程序中的方法,并传递参数。 var name = document.... //注意这里的AndroidWebView方法名chen wi...
  • Android和H5、Js进行交互调用 Android开发过程中,我们或多或少都会用到webview,使用webview来展示一些经常变动的界面更加方便简单, 也已于维护。另一方面hybrid App开发现在用的也越来越多了。其中nativeh5...
  • Android和JS通信方案

    千次阅读 2014-11-11 10:39:09
    Android的webview中如果要想调用Javascript的接可以用 WebView.loadUrl("javascript:onJsAndroid()"); 在Javascript中调用Android的接口可以 mWebView.addJavascriptInterface(new function(),"androd"); ...
  • 本文原创,转载注明出处JUSTYiSheng1、创建html文件 创建文件很简单,用基本的文本编辑器保存成.html格式即可 web.html文件如下&lt;...text/javascript"&gt; function javaToJS(...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 232,172
精华内容 92,868
关键字:

android和js