android 与 h5 互调

 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方法一样的。

猜你喜欢

转载自blog.csdn.net/qq_40803752/article/details/86037917