android调用JavaScript

本文介绍如何使用Rhino引擎在Android环境中执行JavaScript代码,并提供了一个实用的Java工具类JsUtils。通过该工具类,开发者可以方便地加载并运行JavaScript脚本,实现如AES加密等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入

rhino-1.7.8.jar

rhino-android-1.5-sources.jar

 1 package com.vine.util;
 2 
 3 import org.mozilla.javascript.Context;
 4 import org.mozilla.javascript.Function;
 5 import org.mozilla.javascript.NativeJavaObject;
 6 import org.mozilla.javascript.NativeObject;
 7 import org.mozilla.javascript.Scriptable;
 8 
 9 
10 /**
11  * Created by vine on 2018/1/29.
12  */
13 
14 public class JsUtils {
15     public static String runScript(android.content.Context ctx,String js,String functionName,Object[] functionParams){
16         Context rhino =  Context.enter();
17         rhino.setOptimizationLevel(-1);
18 
19         try {
20             Scriptable scope = rhino.initStandardObjects();
21             // Scriptable scope = new ImporterTopLevel(rhino);
22             rhino.evaluateString(scope, js, "MainActivity", 1, null);
23             Function function = (Function) scope.get(functionName, scope);
24             Object result = function.call(rhino, scope, scope, functionParams);
25             if (result instanceof String) {
26                 return (String) result;
27             } else if (result instanceof NativeJavaObject) {
28                 return (String) ((NativeJavaObject) result).getDefaultValue(String.class);
29             } else if (result instanceof NativeObject) {
30                 return (String) ((NativeObject) result).getDefaultValue(String.class);
31             }
32             return result.toString();
33         }finally {
34             Context.exit();
35         }
36     }
37 }

 

使用

注意:WXFileUtils、WXEnvironment 为weex开发环境中的文件

1             String jsCode =   WXFileUtils.loadAsset("script/aes.js", WXEnvironment.getApplication());
2             Object[] params  = new Object[3];
3             params[0] = new String(aeskey);
4             params[1] = new String("加密前的字符串");
5             String ret = JsUtils.runScript(WXEnvironment.getApplication(),jsCode,"aesEncrypt",params);

 

转载于:https://www.cnblogs.com/yklszm/p/8377869.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值