首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Android Xamarin CrossWalk Webview中调用Javascript中的C#函数

在Android Xamarin CrossWalk WebView中调用Javascript中的C#函数,可以通过以下步骤实现:

  1. 首先,在Android项目中添加CrossWalk WebView的依赖库。可以在项目的build.gradle文件中添加以下代码:
代码语言:txt
复制
dependencies {
    implementation 'org.xwalk:xwalk_core_library:23.53.589.4'
}
  1. 在需要使用CrossWalk WebView的Activity中,添加以下代码来初始化WebView:
代码语言:txt
复制
using Org.Xwalk.Core;

// ...

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    // ...

    // 初始化CrossWalk WebView
    XWalkPreferences.SetValue(XWalkPreferences.EnableJavascriptInterface, true);
    XWalkPreferences.SetValue(XWalkPreferences.JavascriptCanOpenWindowsAutomatically, true);

    var webView = new XWalkView(this, this);
    SetContentView(webView);

    // ...
}
  1. 创建一个C#类,用于提供给Javascript调用的函数。该类需要继承自Java.Lang.Object,并使用[Export]属性标记需要暴露给Javascript调用的函数。例如:
代码语言:txt
复制
using Android.App;
using Android.Widget;
using Java.Interop;

namespace YourNamespace
{
    public class JavaScriptInterface : Java.Lang.Object
    {
        private readonly Activity _activity;

        public JavaScriptInterface(Activity activity)
        {
            _activity = activity;
        }

        [Export("showToast")]
        public void ShowToast(string message)
        {
            Toast.MakeText(_activity, message, ToastLength.Short).Show();
        }
    }
}
  1. 在初始化WebView的代码中,将上述创建的C#类实例添加到WebView中:
代码语言:txt
复制
// ...

var webView = new XWalkView(this, this);
SetContentView(webView);

// 添加Javascript接口
var jsInterface = new JavaScriptInterface(this);
webView.AddJavascriptInterface(jsInterface, "jsInterface");

// ...
  1. 在Javascript中调用C#函数,可以使用jsInterface对象来调用。例如,在Javascript中可以使用以下代码调用C#的showToast函数:
代码语言:txt
复制
jsInterface.showToast("Hello from Javascript!");

以上就是在Android Xamarin CrossWalk WebView中调用Javascript中的C#函数的步骤。通过这种方式,可以实现在WebView中的Javascript代码与C#代码的互相调用和交互。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析

    例如,Android平台是通过WebView控件实现web页面的呈现。 Plugins主要用于JavaScript代码调用各平台native功能。...本质都是对原生API做了一层C#封装,因此使用上与原生API会十分相似。这种封装会结合一些C#语法特性,让开发者可以享受C#语法糖。...Xamarin.Android被编译成中间语言,XamarinAPK安装包中会包含一个mono(跨平台.NET运行环境),代码是mono运行时和安卓本地运行时上完成工作。...使用 Visual Studio C# 编写跨平台应用程序。  Xamarin 允许每个平台上创建本机 UI,并在 C# 编写跨平台共享业务逻辑。...QT另外有一个优势在于,它在UI上似乎要比之前几位要方便一些,QML甚至可以直接使用JavaScript(当然,Java也内置了JS引擎),同时QT也包含了大量标准CSS样式表可以使用 如果希望自己从事真正意义上

    14.5K30

    Android_其他语言交互篇——Js、C#、C、C++

    端 题外话 C#——Unity3D 调用方式 实现 C、C++——JNI 准备工作 新项目处理方法 已有项目处理方法 调用 1 前言 Android开发我们有很多时候要与其他语言进行交互,然而对于小白来说学习安卓就够头疼了更不用说其他语言了...android定义可供js调用方法 然后,设置webview参数(1、打开js开关;2、设置webviewClient的如下方法返回值为true,否则loadUrl时候会打开系统浏览器而不是我们...然后UnityC#代码中就可以愉快调用了: ?...先加载编译好so库 b、Android调用JNI: .java文件定义native方法,并调用: ?...Android调用JNI JNI文件调用.java文件方法,一般分为3部: 1、首先反射拿到我们需要调用类,注意包名 .

    2.2K20

    【Hybrid】288- Hybrid App 应用开发 9 个必备知识点复习

    解决办法: 借助 WKNavigtionDelegate 当 WKWebView 总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数,我们函数里执行 [webView reload](这个时候...检测 webView.title 是否为空 并不是所有 H5 页面白屏时候都会调用上面的回调函数,比如,最近遇到一个高内存消耗 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...目前 Crosswalk 正式支持移动操作系统包括 Android 和 Tizen , Android 4.0 及以上系统中使用 Crosswalk Web 应用程序 HTML5 方面可以有一致体验...更强大 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序 WebView 配置为可调试模式。...Stepovernextfunctioncall:执行到下一步函数调用(跳到下一行)。 Stepintonextfunctioncall:进入当前函数

    2.3K20

    Hybrid App 应用开发 9 个必备知识点复习

    解决办法: 借助 WKNavigtionDelegate 当 WKWebView 总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数,我们函数里执行 [webView reload]...检测 webView.title 是否为空 并不是所有 H5 页面白屏时候都会调用上面的回调函数,比如,最近遇到一个高内存消耗 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...目前 Crosswalk 正式支持移动操作系统包括 Android 和 Tizen , Android 4.0 及以上系统中使用 Crosswalk Web 应用程序 HTML5 方面可以有一致体验...更强大 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序 WebView 配置为可调试模式。...Stepovernextfunctioncall:执行到下一步函数调用(跳到下一行)。 Stepintonextfunctioncall:进入当前函数

    2.7K20

    Hybrid App 应用开发 9 个必备知识点复习

    解决办法: 借助 WKNavigtionDelegate 当 WKWebView 总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数,我们函数里执行 [webView reload](这个时候...检测 webView.title 是否为空 并不是所有 H5 页面白屏时候都会调用上面的回调函数,比如,最近遇到一个高内存消耗 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...目前 Crosswalk 正式支持移动操作系统包括 Android 和 Tizen , Android 4.0 及以上系统中使用 Crosswalk Web 应用程序 HTML5 方面可以有一致体验...更强大 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序 WebView 配置为可调试模式。...Stepovernextfunctioncall:执行到下一步函数调用(跳到下一行)。 Stepintonextfunctioncall:进入当前函数

    2.3K30

    android onresume函数,androidActivity重新创建后未调用onResume

    大家好,又见面了,我是你们朋友全栈君。 应用程序设置中进行某些更改时,我recreateonActivityResult调用MainActivity。重新创建后,不调用onResume。...我也收到错误:E/ActivityThread: Performing pause of activity that is not resumed 从this问题开始,我了解到不能从onResume调用函数...另外,使用处理程序来调用recreate可以解决问题,但会导致眨眼,对用户而言很糟糕。这可能是什么错误?没有recreate情况下如何使用Handler? 任何想法将不胜感激。谢谢!...最佳答案 onResume()之前调用OnActivityResult()。...您可以做OnActivityResult()设置一个标志,您可以onResume()检入,如果该标志为true,则可以重新创建活动。

    3.4K20

    Hybrid App 应用 开发 9 个必备知识点复习(WebView 调试 等)

    解决办法: 借助 WKNavigtionDelegate 当 WKWebView 总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数,我们函数里执行[webView reload]...检测 webView.title 是否为空 并不是所有 H5 页面白屏时候都会调用上面的回调函数,比如,最近遇到一个高内存消耗 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...目前 Crosswalk 正式支持移动操作系统包括 Android 和 Tizen , Android 4.0 及以上系统中使用 Crosswalk Web 应用程序 HTML5 方面可以有一致体验...更强大 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序 WebView 配置为可调试模式。...Step over next function call:执行到下一步函数调用(跳到下一行)。 Step into next function call:进入当前函数

    3.1K00

    记一次使用 android 自带 WebView 做富文本编辑器之API、机型兼容及各种奇葩bug解决

    体现在:       1,在上面所列机型里面都有一个共同bug,插入图片后,如果通过 javaScript 设置点击事件,第一次进入该页面的时候,所有webView图片点击都能响应,此时如果用户点击返回...3,因为它所有实现,几乎都是javaScript 注入,你要改,必须要会点javaScript,可能会一点还不够。      ...接下来是CrossWalk,它和上面的不同,它不是一个仅仅只是重写一个 WebView 那么简单,它是独立出来一个浏览器,下载等所有在他们官网:https://crosswalk-project.org...使用方法很简单,我们只需要把 richeditor 里面继承 WebView 改为 CrossWalk XWalkView 即可,修改下对应函数。      ...解决:            使用java大招------反射,因为这个是是难,源码我解决这些东西过程是肯定有看了,百度也不能停,顺便分享个 android 源码链接,在线查看

    2.6K100

    基于React-Native0.55.4语音识别项目全栈方案

    支持API26(Android8.0)版本虚拟机,功能均可实现。最终Can I Use对于getUserMedia( )方法支持度统计信息备注,发现已知问题中写明了: ?...简单地说就是这个方法Android webview,iOS和PWA 基本都用不了。建议以后开发可能用到一些不常用API时完整地看一下相关信息。...2.2 crosswalk 方案: 官方网址:https://crosswalk-project.org/ 利用crosswalk进行app打包时,将webview内核替换为xwalk(crosswalk...测试结果: 遗憾地是这个项目一年前已经停止维护了,最后一版官方脚手架工具也无法初始化新工程,间接使用方式分为两种,第一,下载crosswalk包,手动android工程替换原生WebView...测试结果: 笔者曾在使用cordova3.3时候就融入过crosswalk,也通过cordova插件成功调用过底层GPS,摄像头及其他一些原生组件,当时是为了适配Android4.4版本。

    3.7K30

    ctypesC共享库调用Python函数

    概述 ctypes 是Python标准库中提供外部函数库,可以用来Python调用动态链接库或者共享库函数,比如将使用大量循环代码写在C语言中来进行提速,因为Python代码循环实在是太慢了...大致流程是通过 ctypes 来调用C函数,先将Python类型对象转换为C类型,C函数做完计算,返回结果到Python。这个过程相对是比较容易。...现在有个更复杂情况,我想要在C代码调用Python某些函数来完成C代码计算,比如在C代码sort函数,采用Python定义函数来进行大小判断。...这个Python定义函数 ctypes 称为回调函数 (callback function)。也就是说需要把Python函数当作变量传给C语言,想想还是有些难度。...然后Python文件定义这个回调函数具体实现,以及调用共享库my_lib.so定义foo函数: # file name: ctype_callback_demo.py import ctypes

    35130

    移动开发下Xamarin VS PhoneGap

    幸运是,有很多公司已经研究如何使原生APP开发变得简单,目前为止多平台开发方法主要有两种:第一种方法就是以Web 应用为内核,填充到原生app(PhoneGap提供解决方案)。...这些应用程序称为混合应用,既不是原生WebView渲染)也不是纯Web应用(需要访问原生设备API,是安装包形式)可使用其他插件扩展PhoneGap 功能。...Xamarin Xamarin 提供利用.Net(Mono) 开源实现一个平台,开发人员可使用C#开发一次,Xamarin.Form就可同时生成iOS,Android,及Windows Phone...Xamarin VS PhoneGap Xamarin.Forms PhoneGap 使用C#或XAML语言编码 使用 JavaScript,HTML,CSS 编码 开发iOS ,Android,WindowsPhone...Xamarin -- 借助 Xuni (本地化、跨平台移动控件集),使用本地编程技术,可以 IOS、AndroidXamarin平台上使用相同 API。

    3.4K80

    聊聊移动端跨平台开发各种技术

    ,比如著名 PhoneGap/Cordova,它将原生接口封装后暴露给 JavaScript,可以运行在系统自带 WebView ,也可以自己内嵌一个 Chrome 内核 。...Android 下比较差, iOS 下已经很流畅了, Android 4 之前 WebView 甚至都没有实现 GPU 加速,每次重绘整个页面,有动画时候不卡才怪。...Xamarin Xamarin 可以使用 C# 来开发 Android 及 iOS 应用,它是从 Mono 发展而来,目前看起来商业运作得不错,相关工具及文档都挺健全。... UI 方面,它可以通过调用系统 API 来使用系统内置界面组件,或者基于 Xamarin.Forms 开发定制要求不高跨平台 UI。...而剩下 3 个都基本上挂了,Ejecta 至今还不支持 Android,CocoonJS 转型为类似 Crosswalk WebView 方案,而 Unreal Engine 4 开始不再支持 UnrealScript

    1.6K21

    聊聊移动端跨平台开发各种技术

    ,比如著名 PhoneGap/Cordova,它将原生接口封装后暴露给 JavaScript,可以运行在系统自带 WebView ,也可以自己内嵌一个 Chrome 内核 。...Android 下比较差, iOS 下已经很流畅了, Android 4 之前 WebView 甚至都没有实现 GPU 加速,每次重绘整个页面,有动画时候不卡才怪。...Xamarin Xamarin 可以使用 C# 来开发 Android 及 iOS 应用,它是从 Mono 发展而来,目前看起来商业运作得不错,相关工具及文档都挺健全。... UI 方面,它可以通过调用系统 API 来使用系统内置界面组件,或者基于 Xamarin.Forms 开发定制要求不高跨平台 UI。...而剩下 3 个都基本上挂了,Ejecta 至今还不支持 Android,CocoonJS 转型为类似 Crosswalk WebView 方案,而 Unreal Engine 4 开始不再支持 UnrealScript

    2.2K50

    vuehtml标签{{}}内可以调用函数方法

    今天领导提个需求,要求金额上强制保留两位小数,本想着后台直接返回数据时,带着两位小数,前端只是做个显示作用,后台说保留了小数但在传输过程中去掉了,可能他们做了格式转化。...没办法了只能又是我们前端操作了,牵扯价钱太多了,很多时候又有for 循环,怎么办呢? 思路:{{}}里面的是一个表达式,可不可以是个函数呢?...经测试是可以,具体实现方法如下: 写一个公共强制保留两位小数js方法 function toDecimal2 (x) { var f = parseFloat(x) if (isNaN(f....' } while (s.length <= rs + 2) { s += '0' } return s } export default { toDecimal2 } main.js...引用: import newPrice from '.

    30.7K20

    H5 手机 App 开发入门:技术篇

    混合技术栈:页面本身就是网页,默认 WebView 显示。 跨平台技术栈:提供一个 WebView 语法,编译时候将其换成原生 WebView。...简单说,iOS 原生技术栈就是使用 Object-C 语言或 Swift 语言, Xcode 开发环境编程。...$ ionic serve 上面命令会自动打开浏览器窗口,访问本机8100端口,浏览器显示网页效果。 如果一切正常,命令行窗口按 Ctrl+c,退出服务。...React Native: 使用 JavaScipt 语言编写页面 Xamarin:使用 C# 语言编写页面 Flutter:使用 Dart 语言编写页面 5.1 React Native (1)原理...5.2 Xamarin Xamarin 是微软公司跨平台 App 开发框架,原理跟 React Native 很相似,只不过它语言是 C#。 ?

    6.8K41
    领券