热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

androidDSBridge混合开发交互利器

腾讯X5内核支持:https:github.comwenduxDSBridge-Androidtreex5-3.0Androidstudio配置如下:添加J

腾讯X5内核支持:https://github.com/wendux/DSBridge-Android/tree/x5-3.0

Android studio配置如下:

  1. 添加 JitPack repository 到gradle脚本中

    allprojects {
      repositories {
       ...
       maven { url 'https://jitpack.io' }
      }
    }
2.
dependencies {
   compile 'com.github.wendux:DSBridge-Android:x5-3.0-SNAPSHOT'
}

使用事例如下:

(1)native调用js ,js处理完成之后,给native一个回调,通知完成了

  1. js端注册一个函数 供native调用

html>
lang="en">

    charset="UTF-8">
    
    name="renderer" cOntent="webkit">
    http-equiv="X-UA-Compatible" cOntent="IE=Edge,chrome=1">
    name="viewport" cOntent="/>
    
    


结果:
id="result">

2.native端调用js中注册的函数,传递目标参数,接受js的回调

/**
 * JsBridge demo
 * @author summer
 *
 * */

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private DWebView mDWebView;
    private Button mBtnAddValue;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initEvent();
        initWebView();

    }

    private void initEvent() {
        mBtnAddValue.setOnClickListener(this);
    }

    private <T extends View> T getView(int id){
        View view=findViewById(id);
        return (T) view;
    }

    private void initWebView() {
        DWebView.setWebContentsDebuggingEnabled(true);
        mDWebView.loadUrl("file:///android_asset/native-call-js.html");
    }

    private void initView() {
        mDWebView=getView(R.id.webview);
        mBtnAddValue=getView(R.id.btn_add_value);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_add_value:
                addValue();
                break;
        }
    }


    /**
     * native 调用js的方法,
     * js最后在将处理的结果回调给native
     *
     * */
    private void addValue() {
     mDWebView.callHandler("addValue", new Object[]{1, 2}, new OnReturnValue() {
         @Override
         public void onValue(Integer integer) {
             Toast.makeText(MainActivity.this ,integer+"", Toast.LENGTH_SHORT).show();
         }
     });
    }
}

测试成功

2.js调用native

同理,在native中注册一个函数供js调用,native处理完成之后,将结果回调个js,通知js本次处理完成

native注册一个函数,供js调用,为了便于管理,将函数封装在一个类中:

/**
 * native注册函数,供js调用
 * @author summer
 */

public class JsApi {
    //同步
    @JavascriptInterface
    public String testSyn(Object msg)  {
        return msg + "syn call";
    }

    //异步回调
    @JavascriptInterface
    public void testAsyn(Object msg, CompletionHandler handler){
        handler.complete(msg+" [ asyn call]");
    }
}

activity配置:

public class JsCallNativeActivity extends AppCompatActivity {
    private DWebView mDWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_js_call_native);
        initView();
        initData();
    }

    private void initData() {
// set debug mode
        DWebView.setWebContentsDebuggingEnabled(true);
        mDWebView.addJavascriptObject(new JsApi(), null);

        mDWebView.loadUrl("file:///android_asset/js-call-native.html");
    }


    private void initView() {
        mDWebView=getView(R.id.dwebview);
    }

    private <T extends View> T getView(int id){
        return (T)findViewById(id);
    }


}

js调用native方法:

html>
lang="en">

    charset="UTF-8">
    
    name="renderer" cOntent="webkit">
    http-equiv="X-UA-Compatible" cOntent="IE=Edge,chrome=1">
    name="viewport" cOntent="/>
    
    
    


class="btn" Onclick="callSyn()">Synchronous call
class="btn" Onclick="callAsyn()">Asynchronous call

so easy~~~

DsBridge的更多用法,可以参考官方demo.

DsBridge github:

https://github.com/wendux/DSBridge-Android/tree/x5-3.0


推荐阅读
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 今日份分享:Flutter自定义之旋转木马
    今日份分享:Flutter自定义之旋转木马-先上图,带你回到童年时光:效果分析子布局按照圆形顺序放置且平分角度子布局旋转、支持手势滑动旋转、快速滑动抬手继续旋转、自动旋转支持X轴旋 ... [详细]
  • SmartRefreshLayout自定义头部刷新和底部加载
    1.添加依赖implementation‘com.scwang.smartrefresh:SmartRefreshLayout:1.0.3’implementation‘com.s ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • Java图形化计算器设计与实现
    本文介绍了使用Java编程语言设计和实现图形化计算器的方法。通过使用swing包和awt包中的组件,作者创建了一个具有按钮监听器和自定义界面尺寸和布局的计算器。文章还分享了在图形化界面设计中的一些心得体会。 ... [详细]
author-avatar
木扎尔特2502918527
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有