java.lang.Object | |
↳ | com.tencent.smtt.sdk.JsValue |
每个 JsValue
实例是对一个 JavaScript 值的引用,用于对 JavaScript 引擎返回的不特定数据类型的判断以及与
Java 数据类型的转换。
Protected Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
JsValue(JsContext context, IX5JsValue value) |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
JsValue |
call(Object... args)
如果是 JavaScript 函数,则将输入参数一一转为对应类型的 JavaScript 数据,并调用该 JavaScript
函数;否则,直接返回
null 。
可用于 JavaScript 调用 Java 函数的回调函数。如申明了 JavascriptInterface 接口:
则可在 JavaScript 中调用:
| ||||||||||
JsValue |
construct(Object... args)
如果是 JavaScript 函数,则将输入参数一一转为对应类型的 JavaScript 数据,并作为 构造函数 调用该
JavaScript 函数;否则,直接返回
null 。
用法与 call(Object...) 一致,返回值为该函数构造的 JavaScript 对象的 JsValue 封装。 | ||||||||||
JsContext | context() | ||||||||||
boolean |
isArray()
是否是 JavaScript 数组。
| ||||||||||
boolean |
isArrayBufferOrArrayBufferView()
是否是 JavaScript
ArrayBuffer 或 ArrayBufferView 对象。
| ||||||||||
boolean |
isBoolean()
是否是 JavaScript 布尔值。
| ||||||||||
boolean |
isFunction()
是否是 JavaScript 函数。
| ||||||||||
boolean |
isInteger()
是否是 JavaScript 整型。
| ||||||||||
boolean |
isJavascriptInterface()
是否是通过
addJavascriptInterface(Object, String) 注入的 Java 对象。
| ||||||||||
boolean |
isNull()
是否是 JavaScript
null 。
| ||||||||||
boolean |
isNumber()
是否是 JavaScript 数值。
| ||||||||||
boolean |
isObject()
是否是 JavaScript 对象。
| ||||||||||
boolean |
isPromise()
是否是 JavaScript Promise。
| ||||||||||
boolean |
isString()
是否是 JavaScript 字符串。
| ||||||||||
boolean |
isUndefined()
是否是 JavaScript
undefined 。
| ||||||||||
void |
reject(Object value)
如果是 JavaScript Promise,则将
value 转为对应类型的 JavaScript 数据,并 执行
Promise 失败回调。 | ||||||||||
void |
resolve(Object value)
如果是 JavaScript Promise,则将
value 转为对应类型的 JavaScript 数据,并 执行
Promise 成功回调。 | ||||||||||
boolean |
toBoolean()
转换为 Java 布尔值。
| ||||||||||
ByteBuffer |
toByteBuffer()
转换为 Java ByteBuffer 对象。
| ||||||||||
int |
toInteger()
转换为 Java 整型。
| ||||||||||
Object |
toJavascriptInterface()
返回 Java 对象。
| ||||||||||
Number |
toNumber()
转换为 Java 数值。
| ||||||||||
<T> T |
toObject(Class<T> clazz)
转换为指定 Java 类型的对象,调用该对象的 Java 方法会映射为调用潜在 JavaScript 对象的 JavaScript 方法。
如,JavaScript 代码中申明了对象:
则可在 Java 代码中声明签名一致的类型:
并直接以 Java 签名方式使用:
| ||||||||||
String |
toString()
转换为 Java 字符串。
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
static IX5JsValue.JsValueFactory | factory() |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
如果是 JavaScript 函数,则将输入参数一一转为对应类型的 JavaScript 数据,并调用该 JavaScript
函数;否则,直接返回 null
。
可用于 JavaScript 调用 Java 函数的回调函数。如申明了 JavascriptInterface 接口:
public class AsyncTaskSample {
private JsValue callback;
@JavascriptInterface
public void doTask(String data, JsValue callback) {
mCallback = callback;
}
private void onCompleted() {
if (mCallback != null && mCallback.isFunction()) {
String s = mCallback.call("321");
}
}
}
则可在 JavaScript 中调用:
sample.doTask("123", function(result) { console.log(result); });
args | 函数的输入参数 |
---|
null
。
如果是 JavaScript 函数,则将输入参数一一转为对应类型的 JavaScript 数据,并作为 构造函数 调用该
JavaScript 函数;否则,直接返回 null
。
用法与 call(Object...)
一致,返回值为该函数构造的 JavaScript 对象的 JsValue
封装。
args | 函数的输入参数 |
---|
null
。
是否是 JavaScript 数组。
是否是 JavaScript ArrayBuffer
或 ArrayBufferView
对象。
是否是 JavaScript 布尔值。
是否是 JavaScript 函数。
是否是 JavaScript 整型。
是否是 JavaScript null
。
是否是 JavaScript 数值。
是否是 JavaScript 对象。
是否是 JavaScript Promise。
是否是 JavaScript 字符串。
是否是 JavaScript undefined
。
如果是 JavaScript Promise,则将 value
转为对应类型的 JavaScript 数据,并 执行
Promise 失败回调。
value | 传给 Promise 执行失败回调的参数 |
---|
如果是 JavaScript Promise,则将 value
转为对应类型的 JavaScript 数据,并 执行
Promise 成功回调。
value | 传给 Promise 执行成功回调的参数 |
---|
转换为 Java 布尔值。
false
。
转换为 Java ByteBuffer 对象。
ArrayBuffer
或 ArrayBufferView
对象,则返回对应的 Java ByteBuffer 对象;否则,返回 null
。
转换为 Java 整型。
0
。
返回 Java 对象。
addJavascriptInterface(Object, String)
注入的 Java
对象,则返回该对象;否则,返回 null
。
转换为 Java 数值。
null
。
转换为指定 Java 类型的对象,调用该对象的 Java 方法会映射为调用潜在 JavaScript 对象的 JavaScript 方法。 如,JavaScript 代码中申明了对象:
var sample = {};
sample.empty = function() { console.log("call sample#empty"); }
sample.primitive = function(c) { console.log("call sample#primitive", c); return 1; }
sample.object = function(o) { console.log("call sample#object", o); return "123"; }
则可在 Java 代码中声明签名一致的类型:
public interface Sample {
void empty();
byte primitive(char c);
String object(Object o);
}
并直接以 Java 签名方式使用:
context.evaluateScriptAsync("sample", new ValueCallback() {
@Override
public void onReceiveValue(JsValue value) {
if (value != null && value.isObject()) {
Sample sample = value.toObject(Sample.class);
sample.empty();
byte b = sample.primitive('a'); // b is 1
String s = sample.object(null); // s is "123"
}
}
}, null);
clazz | 指定转换的目标 Java Interface。 |
---|
转换为 Java 字符串。
null
。