前言:
android发展至今,为了屏幕适配、apk的大小以及代码的适配,在很多情况下都是通过H5互调。
WebView
初始化
@SuppressLint("JavascriptInterface")
private void initWebView() {
//1.加载页面-H5,html,自定义浏览器,直接在
webView = new WebView(this);
WebSettings webSettings = webView.getSettings();
//设置支持js
webSettings.setJavaScriptEnabled(true);
//不调用浏览器,自身成为小型浏览器
webView.setWebViewClient(new WebViewClient());
//在使用Javascript里给到点击事件调用AndroidAndJsInterface类里的方法
webView.addJavascriptInterface(new AndroidAndJsInterface(),"Android");
//加载本地-网络html
webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall1.html");
//webView.loadUrl("https://www.baidu.com/");
setContentView(webView);
}
android中的JavaScript的接口 web —> android
@JavascriptInterface注解非常重要如果没有注解的话,web端是无法调用android里的方法的。
class AndroidAndJsInterface{
//交互必要的交互注解方式
@JavascriptInterface
public void showToast(){
Toast.makeText(JavaAndJsCallActivity.this, "android 代码", Toast.LENGTH_SHORT).show();
}
}
javascript代码
<!-- window 是固定写法,Android 是“webView.addJavascriptInterface(new class,"Android")一致
showToast是interface.Class里的方法 -->
<button onclick="window.Android.showToast()">JS调用Android</button>
android 传参数给 web
webView.loadUrl("javascript:f3()");
//webView.loadUrl("javascript:javaCalls("+"'"+accent+"'"+")");
//webView.loadUrl("javascript:f3()");
setContentView(webView);
拿到url播放视频
Intent intent= new Intent();
intent.setDataAndType(Uri.parse("url"),"video/*");
startActivity(intent);
指定apk播放视频
if (com.freeme.util.FreemeFeature.getLocalBoolean("config.open_receive_images.sprd_gallery", false)) {
if (mimetype != null && mimetype.contains("video")) {
activityIntent.setComponent(new android.content.ComponentName("包名",
"Activity.name"));
}
}