# JS如何调用Android方法
JS端调用Android方法示例:
import { jJsvRuntimeBridge } from "jsview"
jJsvRuntimeBridge.方法名()
1
2
3
2
3
# 支持的方法
# getWireMac
// JS接口: 获取有线MAC信息
function getWireMac();
1
2
2
# getWifiMac
// JS接口: 获取无线MAC信息
function getWifiMac();
1
2
2
# getDeviceUUID
// JS接口: 获取UUID,使用mac地址与序列号生成
function getDeviceUUID();
1
2
2
# getAndroidId
// JS接口: 获取AndroidId
function getAndroidId();
1
2
2
# openWindow
/**
* 打开另外一个小程序
* @param {string} url 小程序url
* @param {string} startup_image 启动图url
* @param {string} startup_video 启动视频url
* @param {int} startup_duration 启动图时长,默认0
* @param {int} add_history 是否添加历史,0不添加,1添加
* @returns {Promise} 可用于监听新的小程序返回的结果
*/
function openWindow(url, startup_image, startup_video, startup_duration, add_history);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
使用示例: 第一个小程序
// openWindow打开某个小程序
let promise = jJsvRuntimeBridge.openWindow("jsvappid://APPID_pyh");
// 接收小程序的返回的数据(只会有一次)
promise.then((result)=>{
console.log("收到数据:"+result) //abcd
}).catch((result)=>{
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
第二个小程序
// 返回数据给上一个小程序,只能调用一次
jJsvRuntimeBridge.onWindowResult("abcd")
1
2
2
# startUrlInNewTab
/**
* 用新的进程打开另外一个小程序
* @param {string} url 小程序url
* @param {string} startup_image 启动图url
* @param {string} startup_video 启动视频url
* @param {int} startup_duration 启动图时长,默认0
* @param {int} add_history 是否添加历史,0不添加,1添加
* @returns {Promise} 可用于监听新的小程序返回的结果
*/
function startUrlInNewTab(url, startup_image, startup_video, startup_duration, add_history);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
打开新的进程会触发java部分的逻辑,需要自己实现,具体参考独立进程页面支持
# onWindowResult
需要配合openWindow或者startUrlInNewTab或者warmLoadView使用
/**
* 用于给上一个小程序返回结果,通常与startUrlInNewTab和openWindow配合使用
* @param {string} data 返回给上一个小程序的结果
*/
function onWindowResult(data);
1
2
3
4
5
2
3
4
5
# reloadWindow
/**
* 重新加载一个小程序覆盖当前小程序
* @param {string} url 小程序url
* @param {string} startup_image 启动图url
* @param {string} startup_video 启动视频url
* @param {int} startup_duration 启动图时长,默认0
* @param {int} add_history 是否添加历史,0不添加,1添加
*/
function reloadWindow(url, startup_image, startup_video, startup_duration, add_history);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# getStartParams
/**
* 获取启动内核版本和引擎
* @returns {Object} 包含
* COREVERSIONRANGE: 启动时设定的内核版本范围
* ENGINE: 启动时设定的Js引擎的URL
*/
function getStartParams();
1
2
3
4
5
6
7
2
3
4
5
6
7
# getExtFeaturesSupport
/**
* 获取当前集成JsView的APP目前支持的扩展功能列表
*
* @returns {string} 功能列表,以逗号隔开,包含:
* favourite : 支持加入收藏夹功能
* history : 支持浏览后自动进入历史记录功能
* textureVideo : 支持将video渲染到texture的方式(JsvVideo高阶控件的usetexture属性控制)
*/
function getExtFeatureSupports();
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# closePage
// JS接口: 退出当前小程序
function closePage();
1
2
2
# getSystemProperty
/**
* 获取系统属性
* @param {string} key 属性名称,比如:ro.product.model。
* @returns {string} 属性值
*
*/
function getSystemProperty(key);
1
2
3
4
5
6
7
2
3
4
5
6
7
# getInstalledApps
/**
* 获取已安装应用列表
* @returns {string} 应用列表,JSON结构的数组
*
*/
function getInstalledApps();
1
2
3
4
5
6
2
3
4
5
6
# startNativeApp
/**
* 启动安卓APP
* @param {string} package_name 包名
* @param {string} activity Activity方式启动
* @param {string} action Action方式启动
* @param {string} uri Uri方式启动
* @param {Array} flags 数组,用于intent.addFlags
* @param {Array} param JSON格式数组,数组元素是 object ,object中的内容用于intent.putExtra
*
*/
function startNativeApp(package_name, activity, action, uri, flags, param);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# sendNativeBroadcast
/**
* 发送安卓广播
* @param {string} package_name 包名
* @param {string} broadcast 广播类名,比如“com.qcode.MyBroadcastReceiver”,用于intent.setComponent()
* @param {string} action 对应 intent.setAction()
* @param {string} uri 对应intent.setData()
* @param {Array} flags 数组,用于intent.addFlags
* @param {Array} param JSON格式数组,数组元素是 object ,object中的内容用于intent.putExtra
*
*/
function sendNativeBroadcast(package_name, broadcast, action, uri, flags, param){
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# startService
/**
* 启动Android 服务
* @param {string} package_name 包名
* @param {string} services 服务类名,比如“com.qcode.MyService”,用于intent.setComponent()
* @param {string} action 对应 intent.setAction()
* @param {string} uri 对应intent.setData()
* @param {Array} flags 数组,用于intent.addFlags
* @param {Array} param JSON格式数组,数组元素是 object ,object中的内容用于intent.putExtra
* @param {boolean} is_foreground 是否使用startForegroundService
*/
function startService(package_name, services, action, uri, flags, param,is_foreground);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# warmUpView
/**
* 页面预热接口,预热页面将会将以一个新的FrameLayout(内含JsView)的方式加载一个新的应用
* 但这个应用在warmLoadView之前,不会创建texture/surface的实际描画资源,也不会加载图片
* 仅加载所有JS代码,并正常走完所有启动逻辑(包括描画逻辑),但不会走setTimeout对应的延时逻辑,也不会显示
* 预热的界面可以极大加速界面切换的时间,例如应用跳转到购物类界面
* mode为1表示全预热,app_url不能为空,mode为2表示只预热engine url,如果app_url不为空,engine url来自于app_ur
* 否则来自于当前使用的engine url,app_url表示小程序的链接。
* 【特别注意】warmUp起来的view,在warmLoadView调用之前,若启动者JsView关闭的话,此View应该在
* View管理模块被清理掉,以防泄露,但在warmLoadView完成后,就不需要进行关联清理,请管理模块务必保证此机制。
* [参数]
* int mode 预热模式,1:全预热,目前只支持1
* String app_url 要预热的app_url,当半预热时,可以为null
* [返回值]
* int: 为view_refer_id值,预热后的View的ID,用于后续的warmLoadView和closeWarmView使用
*/
function warmUpView(mode, app_url) ;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# warmLoadView
/**
* 将warmUpView后的View展示出来
* 当warmUpView中设置了app_url时,仍可以新的app_url调整history hash(#)部分进行子页面切换
*
* @param {number} view_refer_id warmUpView调用后返回来的View ID
* @param {string} app_url 无意义,请传固定值 null
* @param {boolean} add_history 启动的界面是否进访问历史列表
* @returns {Promise} 可用于监听新的小程序返回的结果
*/
function warmLoadView(view_refer_id, app_url, add_history);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# closeWarmedView
/**
* 关闭warmUp后未进行warmLoad的View,释放资源
* @param {number} view_refer_id warmUpView调用后返回来的View ID
*/
function closeWarmedView(view_refer_id);
1
2
3
4
5
2
3
4
5
# getDeviceInfo
/**
* 获取设备信息
* @returns {string} 终端设备信息,JSON数据结构
*/
function getDeviceInfo();
1
2
3
4
5
2
3
4
5
# notifyPageLoaded
// JS接口: 从JS发出界面加载完成的通知,可以触发隐藏启动图的动作
function notifyPageLoaded();
1
2
2
# preDownloadSdk
/**
* 触发预下载内核
* @param {string} core_version 带branch(主分支版本不带此信息)和版本信息的内核版本,
* 例如: 1021265_release_build_xxx
* @returns {promise} 对象,用于监听下载完成与下载失败
*/
function preDownloadSdk(core_version);
1
2
3
4
5
6
7
2
3
4
5
6
7
使用示例:
jJsvRuntimeBridge.preDownloadSdk("1021333").then((version)=>{
//加载成功
}).catch((errorInfo)=>{
//加载失败
})
1
2
3
4
5
6
2
3
4
5
6