cocos-js在android平台下打开网页

cocos-js在web端通过window.location或window.open无法在Android APK中打开网页。解决方法是利用jsb绑定调用Java方法。在AppActivity.java中添加openUrl函数,接收URL并启动Intent打开。在JavaScript中,通过判断操作系统为Android时,使用jsb.reflection调用此方法打开网页。

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

cocos-js在web端打开网页一般用window.location="http://www.bilibili.com" 或者window.open("http://www.bilibili.com");

但是打包成apk后这句话就不起作用了,所以需要使用jsb绑定通过调用java来访问网页。

引擎自身封装了调用的方法: jsb.jsb.reflection.callStaticMethod(
"org/cocos2dx/xxx/xxx", //类所在的位置,不用填写后缀
"hello", //要调用的函数的名字
"(Ljava/lang/String;)V", //签名,括号里面的是要传递的参数的类型,hello函数;括号外面的是返回值的类型。V表示没有返回值void;I表示int;Z表示布尔。
"hahaha"//要传递的参数可以是字符串,也可以是其他的要符合第三个参数的类型
);

所以我们需要创建一个类或者找到一个类,想里面添加我们想要调用的函数。可以放入项目所在目录\frameworks\runtime-src\proj.android\src\org\cocos2dx\javascript这个下面或者是在这个下面的一个文件里修改我想要的东西。我是写在AppActivity.java里面。

用eclipse打开来修改更方便。

在这个文件里面添加  
    public static void openUrl(String url) 
    { 
          Uri uri = Uri.parse(url); 
          Intent it = new Intent(Intent.ACTION_VIEW,uri); 
          sContext.startActivity(it); 
    } 

前面添加import android.app.Activity;
import android.content.Intent;
import android.net.Uri;

然后在需要打开网页的地方写上

jsb.reflection.callStaticMethod("org/cocos2dx/lib/Cocos2dxActivity", "openUrl", "(Ljava/lang/String;)V",webUrl); //webUrl是我自己定义的一个string类型的链接地址,如http://www.baidu.com就可以了。

js上不能执行jsb的方法,会报错  可以在前面加上判断

if(cc.sys.os=="Android){

jsb.reflection.callStaticMethod("org/cocos2dx/lib/Cocos2dxActivity", "openUrl", "(Ljava/lang/String;)V","http://www.bilibili.com/");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值