精华内容
下载资源
问答
  • Android和js的交互主要分为三种:1,安卓调用js的方法。2,js调用安卓的方法。3回调,即js调用安卓的方法获得数据,然后数据回传给jsjs做业务处理。如有疑问可以看博客:...
  • 前端JS调用安卓方法

    2019-11-14 12:23:11
    window.client // 是个对象,是安卓注入到JS中的,安卓中所有向JS暴露... android.test(param1, param2) // 调用的函数,且传参给安卓。参数的数据类型必须和安卓定义的一致 let returnValue = android.test(param1...
    
    window.client  // 是个对象,是安卓注入到JS中的,安卓中所有向JS暴露的方法都在里面
     let android =  window.client; // 将注入对象赋给变量
    
     android.test(param1, param2) // 调用的函数,且传参给安卓。参数的数据类型必须和安卓定义的一致
     let returnValue = android.test(param1, param2) // 接收安卓的返回值,如果是要封装,记得加return,不然一直都是undefined
    
    展开全文
  • Android4.2以前WebView 提供了javascript 调用...所以必须要每个可供js代码调用的Java方法加一个@JavascriptInterface接口。1 //js调用代码 w.settings.javaScriptEnabled = true w.addJavascriptInterface(GetH.

    Android4.2以前WebView 提供了javascript 调用Java代码的方法,会造成很大的安全漏洞。Android官方在API17后,限制javascript代码只能调用声明了@JavascriptInterface 注解的Java方法。

    所以必须要给每个可供js代码调用的Java方法加一个@JavascriptInterface接口。1

    //js调用代码
    w.settings.javaScriptEnabled = true
    w.addJavascriptInterface(GetHTMLContent(), "lt")
    w.webViewClient = MyWebViewClient()
    w.loadUrl("javascript:lt.showh(document.getElementsByTagName('html')[0].innerHTML);")
    
    //调用的方法
    class GetHTMLContent {
       @JavascriptInterface
       fun showh(html: String) {
           Log.d("HTML", html)
        }
    }
    

    1. Android WebView在API17后addJavascriptInterface方法无效 ↩︎

    展开全文
  • Android:JS调用安卓方法介绍

    千次阅读 2016-09-19 17:59:11
    Android:JS调用安卓方法介绍标签...1创建提供给JS调用的方法 2在JS中调用方法 3将对象传递个JS代码 Demo 1,创建提供给JS调用的方法 @android.webkit.JavascriptInterface fun showToast(name: String) { Toast.ma

    Android:JS调用安卓方法介绍

    标签(空格分隔): android js


    1,创建提供给JS调用的方法

        @android.webkit.JavascriptInterface
        fun showToast(name: String) {
            Toast.makeText(this, name, Toast.LENGTH_SHORT).show()
        }

    给方法声明@android.webkit.JavascriptInterface后表明该方法允许JS代码调用

    2,在JS中调用方法

        <!DOCTYPE html>
        <html>
            <head>
                <meta http-equiv="Content_Type" content="text/html;charset=utf-8"/>
                <title>Js调用Android</title>
            </head>
            <body>
                <input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"/>
            </body>
        </html>

    这里调用了上面提供的showToast方法

    3,将对象传递个JS代码

            val settings = mmWebView.settings
            settings.javaScriptEnabled = true
            mmWebView.addJavascriptInterface(object, "myObj")

    第一句取出WebView的设置对象,第二句允许执行JS代码,第三句发送方法所在的对象,并将方法命名为myObj

    Demo

    class MiniBrowserActivity : AppCompatActivity() {
        val js = """
        <!DOCTYPE html>
        <html>
            <head>
                <meta http-equiv="Content_Type" content="text/html;charset=utf-8"/>
                <title>Js调用Android</title>
            </head>
            <body>
                <input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"/>
            </body>
        </html>
        """
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_mini_browser)
    
            val settings = mmWebView.settings
            settings.javaScriptEnabled = true
            mmWebView.addJavascriptInterface(this, "myObj")
            mmWebView.loadData(js, "text/html;charset=utf-8", "utf-8")
        }
    
        @android.webkit.JavascriptInterface
        fun showToast(name: String) {
            Toast.makeText(this, name, Toast.LENGTH_SHORT).show()
        }
    }

    最终效果截图

    展开全文
  • 之前代码js调用安卓原生都是用异步方法,比如callback, promiss,异步话,我们一般是在安卓原生有耗时操作,才用异步,如果我要离开返回,就需要js调用安卓同步方法 利用callback实现js调用原生可以参考我这篇...

    1 问题

    之前的代码js调用安卓原生都是用的异步方法,比如callback, promiss,异步的话,我们一般是在安卓原生有耗时操作,才用异步,如果我要离开返回,就需要js调用安卓同步方法

    利用callback实现js调用原生可以参考我的这篇博客

    React Native实现js调用安卓原生代码

    React Native之js调用Android原生使用Callback传递结果给js

     

     

     

    2  代码实现

    依然在MyToastModule.java文件下面增加下面的同步函数

        @ReactMethod(isBlockingSynchronousMethod = true)
        public String showMyName() {
            return "chenyu1";
        }

    这里用了注解,请注意,也就是说意味着这个方法是同步方法

    然后App.js的部分实现如下

    /**
     * Sample React Native App
     * https://github.com/facebook/react-native
     *
     * @format
     * @flow
     */
    
    import React, {Component} from 'react';
    import {Platform, StyleSheet, Text, View, NativeModules} from 'react-native';
    
    const instructions = Platform.select({
      ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
      android:
        'Double tap R on your keyboard to reload,\n' +
        'Shake or press menu button for dev menu',
    });
    var myAndroidToast = NativeModules.MyToast;
    type Props = {};
    export default class App extends Component<Props> {
       
        constructor(props){
            super(props);
            this.state={
                myName:'chenzixuan',
            }
        }
      
      render() {
        return (
          <View style={styles.container}>
            <Text onPress={()=> this._androidShowMsg()} style={styles.welcome}>Welcome to React Native!</Text>
            <Text style={styles.instructions}>To get started, edit App.js</Text>
            <Text style={styles.instructions}>{instructions}</Text>
            <Text style={styles.instructions}>{this.state.myName}</Text>
          </View>
        );
      }
    
        _androidShowMsg = () => {
           var value = myAndroidToast.showMyName();
           this.setState({myName:value});
            
        };
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
      },
      welcome: {
        fontSize: 20,
        textAlign: 'center',
        margin: 10,
      },
      instructions: {
        textAlign: 'center',
        color: '#333333',
        marginBottom: 5,
      },
    });

     

     

     

     

     

     

    3 运行结果

    点击Welcome to React Native 效果如下

     

    展开全文
  • js安卓互相调用

    2016-11-30 11:50:17
    今天写的是安卓调用html中的js,如果安卓中和js想要相互调用,首先要代码设置webview能够执行javaScript 默认是不执行的代码如下图 然后像webview注册一个对象onfire ,同样也传递一个JavaScriptCallBack实例...
  • 最近项目中遇到一个webview...做web开发朋友应该知道,这个需要在A中通过window.open()开启B,在B中选择完毕和调用window.close()关闭B,并且把获取值传递A。由于我不是做web开发,表述可能不是特别对,但...
  • Android调用H5的方法.Js交互

    千次阅读 2018-04-18 12:06:28
    1.概述 在安卓开发中, 内嵌H5页面情况越来越多, 很多时候我们需要和H5进行相互调用, 比如H5调用安卓的方法 打开应用市场 等等 安卓调用H5的方法 获取网页传递数据 等等 。交互其实是很简单的的一个问题,下面...
  • 最近项目中遇到一个webview...做web开发朋友应该知道,这个需要在A中通过window.open()开启B,在B中选择完毕和调用window.close()关闭B,并且把获取值传递A。由于我不是做web开发,表述可能不是特别对,但
  • 新建一个外部公共的js文件app.js,定义一个对象并输出,如下: var hybrid = { } window.Hybrid = hybrid if (window.Vue) { // 自动绑定 window.Vue.use(hybrid) } export { hybrid } 在需要的...
  • 最近有个需求,使用车牌识别,由于项目前期定型时使用Html 5plus,使用是上传图片到服务器然后调用百度SDK把识别结果返回前端,这个项目还是使用Hbuilder离线打包出来版本,对前端是一知半解,还是习惯...
  • 安卓平台上,通常我们使用继承“ReactContextBaseJavaModule.java”,并通过注解方式“@ReactMethod”,添加至packages。然后注册到至JS-C++-Java通信消息队列中。...1.原生的方法中增加括号内注解部分 @Re...
  • js调用摄像头解析二维码

    千次阅读 热门讨论 2019-09-17 13:47:48
    因为需求做一个扫码功能,发觉网上资料不是不能用就是不完善,遂借鉴各种...逻辑流程:网上出了各种借助照相机办法,方法很多,我觉得最合适我属于,js获取摄像头设备,然后获取打开摄像头,获取视频流,...
  • js和android方法互调

    2018-11-13 10:18:11
    //安卓端代码 WebView myWebView = (WebView) findViewById(R.id.myWebView); myWebView.getSettings().setJavaScriptEnabled(true);... //webview添加js接口(供js调用安卓的方法) myWebView.addJavascriptInte...
  • 最近一直搞Dcloud ,这是HTML5版本开发,打包时候,可以打包成 apk 和ipa 分别运行在...我试了很多方法,之前是在 HTML5上直接写方法,监听蓝牙状态,但是jS是单线程,直接把进程阻塞了其他啥也干不了,而且时...
  • 创建app.js,调用安卓ios分享方法,并传参(options) initShare(content,options){ // h5客户端传递参数 const can={ share_title:content.title, share_desc :content.desc, share_ico
  • 我试了很多方法,之前是在 HTML5上直接写方法,监听蓝牙状态,但是jS是单线程,直接把进程阻塞了其他啥也干不了,而且时间长了监听,总会莫名中断, 这是我当时写算法 http://ask.dcloud.net.cn/publish/ar
  • 话不多说,先上效果图 大致的思路 要从RN中调用原生相机拍照和选择照片思路是这样的,先在原生中创建一个ReactContextBaseJavaModule模块,...1.编写提供RN调用的拍照和选择照片的方法。 首先创建一个继承自ReactCon
  • 遇到问题:由于调用格式都是前端调用原生壳方法,需要走JS桥(自己公司实现一套android、js交互方法),走JS时候会比直接走原生慢,然后拍照如果不做处理,直接转Base64(图片越大,Base64越长)返前端...
  • Android WebView上传图片(base64)到H5(JS)

    千次阅读 2017-09-18 09:01:29
    利用WebChromeClientopenFileChooser(5.0+是onShowFileChooser)JS调用安卓端定义好接口选择图片或者打开照相机,获取到图片信息(base64)之后,安卓调用JS方法回调H5JS调用安卓端定义好
  • H5调用原生方法 约定方法名h5share,h5通过方法h5share传参idios和Android, navigator.userAgent获取设备信息 安卓获取id代码
  • 博主就今天周五又做了个需求(安卓Android与H5交互),原来上线功能是服务器配置过来学习报告(一个H5页面)并提供原始微信分享功能,今天增加是反向需求,由APP提供服务器配置过来H5页面子级页面调用...
  • weex已经提供了一些功能,但是有一些比如:获取mac地址、封装一些natvie自带播放功能给js使用,则需要提供js调用native功能;当然,natvie有时候做完一些事情后,也需要主动调用js函数,告诉js接下来动作。 *
  • 前言:在上一篇文章中,已经分享了安卓端如何通过WebView调用JavaScript定义的方法来进行背景图片设置,接下来在这篇文章中我将把如何在JS调用Android端定义的方法分享大家。功能描述:JS调用安卓端定义...
  • 前话 笔者是写H5小页面的,所以这篇文章主要是针对前端与安卓交互时遇到的一些问题做简单总结和合理猜测,针对安卓的话,有一个图是总结所有交互的方式的,可以看...● 提供给安卓使用的js方法,需要提高到window...
  • 混合App

    2020-12-07 21:42:28
    有个安卓的js, 里面就是所有的安卓方法, 把所有安卓方法定义到一个function里, function只做安卓调用 目前市场上主流的APP分为三种:原生APP、Web APP(即HTML5)和混合APP三种,相对应的定制开发

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

给安卓调用的js方法