Android内嵌H5(1)

Android内嵌H5(1)

Android嵌入H5,并调用H5中的方法

1、Android嵌入H5,并添加对js的支持

1)首先获取WebView对象实例,或去之后将页面加载到该实例中

WebView webView = findViewById(R.id.webView_h5);//获取android页面中的中的webView
webView.loadUrl("http://127.0.0.1/asset/pages/forAndroidAndH5.html");//嵌入H5页面

2)添加js支持

WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);//打开js支持

3)加入辅助处理js,不然有一些js的函数会失效,比如alert()方法

webView.setWebChromeClient(new WebChromeClient(){
	public boolean onJsAlert(WebView view, String url, String message, JsResult result){
        return super.onJsAlert(view, url, message, result);
    }
});

4)加入缓存清楚机制,不然H5页面有变动,不能及时在app端显示出来

webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

至此,android内嵌H5的工作已经完成,接下来将是android端调用H5的js函数

2、android调用H5的js函数

1)调用无参/有参,但无返回值的js函数

webView.loadUrl("JavaScript:androidtoh5Withparam('" + msg + "')");

如果参数是字符串,则需要'单引号,如果传递的是数值,则不需要,如果没有参数,支保留一个()即可

2)调用无参/有参,且有返回值的js函数

int arg1 = 10;
int arg2 = 12;
String methodH5 = "androidtoh5WithResult(" + arg1 + "," + arg2 + ")";
webView.evaluateJavascript(methodH5, new ValueCallback<String>() {
	@Override
	public void onReceiveValue(String s) {
	    System.out.println("=====s:" + s);
	}
});

传参形式和==1)==中提到的一样
对应的H5中的js函数为

function androidtoh5WithResult(arg1, arg2) {
	return arg1 + arg2;
}

至此,Android内嵌H5(1)的内容已经完成

Android内嵌H5(2)地址:https://blog.csdn.net/Dong_Da_JR/article/details/84337762

H5做的商城客户端,效果和android原生客户端没多大区别,现在h5是越来越火了, android的小伙伴们又遇到一个新的挑战了。本项目只能学习一下WebViewActivity使用, 但是由于js看不到,所以补发看到里面的方法, 主要代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); ButterKnife.bind(this); String url = getIntent().getStringExtra(EXTRA_URL); mWebView.setWebViewClient(new WebViewClient()); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.loadUrl(url); setupActionBar(url); } 还有就是CustomTabActivityHelper类封装了 /** * Opens the URL on a Custom Tab if possible. Otherwise fallsback to opening it on a WebView * * @param activity The host activity * @param customTabsIntent a CustomTabsIntent to be used if Custom Tabs is available * @param uri the Uri to be opened * @param fallback a CustomTabFallback to be used if Custom Tabs is not available */ public static void openCustomTab(Activity activity, CustomTabsIntent customTabsIntent, Uri uri, CustomTabFallback fallback) { String packageName = CustomTabsHelper.getPackageNameToUse(activity); //If we cant find a package name, it means there's no browser that supports //Chrome Custom Tabs installed. So, we fallback to the webview if (packageName == null) { if (fallback != null) { fallback.openUri(activity, uri); } } else { customTabsIntent.intent.setPackage(packageName); customTabsIntent.launchUrl(activity, uri); } } /** * Unbinds the Activity from the Custom Tabs Service * @param activity the activity that is connected to the service */ public void unbindCustomTabsService(Activity activity) { if (mConnection == null) return; activity.unbindService(mConnection); mClient = null; mCustomTabsSession = null; }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值