android 与 h5 互调

本文介绍了Android与H5之间的互调方法。Android调用H5主要通过设置WebView的JavaScript接口,而H5调用Android则通过window对象调用预先定义的接口。详细步骤包括设置接口、调用方法及参数传递等,特别强调了Java方法需添加@JavascriptInterface注解以及字符串参数的处理方式。

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

 android 与h5互调还是很简单的。

 

首先需要基本配置下webview。 这里都不是重点,可以忽视。

wb_content.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
wb_content.getSettings().setDomStorageEnabled(true);
wb_content.getSettings().setDatabaseEnabled(true);
wb_content.getSettings().setAppCacheEnabled(true);
String cacheDirPath = context.getFilesDir().getAbsolutePath() + APP_CACHE_DIRNAME;
wb_content.getSettings().setDatabasePath(cacheDirPath);
wb_content.getSettings().setPluginState(WebSettings.PluginState.ON);
wb_content.getSettings().setAppCacheEnabled(true);
wb_content.getSettings().setGeolocationEnabled(true);
wb_content.getSettings().setGeolocationDatabasePath(context.getFilesDir().getPath());

wb_content.setWebViewClient(new WebActivity.webViewClient());

 

一 . js 调用 android 

1. 设置js调用 android的接口 

wb_content.addJavascriptInterface(this,"androidapp");

this,代码实现  这个接口的地方。 不需要 implements java 接口。 一般传入一个class类。 类里面实现下面的说的方法。

"androidapp" ,js与android 。一起定义的接口类 名称。

 

2. h5代码调用: 

window.androidapp.xx方法名();

window,窗口

androidapp:上面一起商定的接口类名称.

xx方法名: java 代码的方法名

 

2.1 h5带参调用android 

如果是数字,js需要强制number类型。不需要冒号。android 就可以了。

字符串,带上冒号。

 

3.  java 实现的方法 , 需要加上注解:@JavascriptInterface

@JavascriptInterface   // js调用 java 方法 注解必须加上
public void javaFunctionName() {
//  运行实现 webview 的子线程中, 注意更新ui等,需要去主线程
    mContext.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(mContext, GlShangBaoActivity.class);
            mContext.startActivity(intent);
        }
    });
}

 

4.总结: 1.是定一个公共的名称: androidapp ,设置进 webview.wb_content.addJavascriptInterface(this,"androidapp");

2.h5通过 window.公共的名称.java方法名

3.java 在方法上 实现 :@JavascriptInterface 的注解,注意方法是public

 

 

android 调用 H5

1. 需要配置下webview

webview.getSettings().setJavaScriptEnabled(true);

2. 获得h5的方法名

 

3. 拼出  javascript:   +方法名 ,可以理解为下面 u这个字符 串  javascript: 后面这部分是个  方法 调用。

String u="javascript:geidingwei('" +la+"','"+ lo+"')";
webview.loadUrl(u);

4. 注意一点:如果需要转移的string,需要加上 单引号 ‘’;

String i ="我 ";String y="你";

String u= " javascript:geidingwei(" +x  +"," +y+")"

如果你是手动 拼接的话就需要在 会被转移的地方加上‘’

String u= " javascript:geidingwei(" +  "  '   我  '  " + " ,"+ " '   你 '  " + ")"

 

一般不建议手动拼,用个String 变量代替,就跟java方法一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值