一、创建一个HTML网址进行测试
webView.html
1.<html>
<head>
<title>
</title>
</head>
<body>
<input type="button" value="Say hello" onClick="showAndroidToast('Web传递参数到Android')" />
<script type="text/javascript">
function test(card_mo ,price){
Android.showtest(card_mo+price);
}
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
</body>
</html>
2.创建一个JavaScriptInterface 接口类
package com.ruidde.csndresourcedemo;
import android.content.Context;
import android.webkit.JavascriptInterface;
import android.widget.Toast;
/**
* Created by Administrator on 2017/1/5.
*/
public class JavaScriptInterface {
Context mContext;
/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
/** Show a toast from the web page */
public void showToast(String toast) {
Toast.makeText(mContext, toast+"0000000", Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
/** Show a toast from the web page */
public void showtest(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
3.在Activity中使用
package com.ruidde.csndresourcedemo;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private String card_mo ,price ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
card_mo = "1234565";
price = "32.00";
WebView myWebView = (WebView) findViewById(R.id.webview);
//设置js可用
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
//注解自定义对象 js用自定义的对象如:Android 来调用Android中方法
myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
//网址本地自己写的
myWebView.loadUrl("file:///android_asset/webView.html");
//webView网页加载进度
myWebView.setWebChromeClient(new WebChromeClient()
{
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress == 100){ //网页加载完成
/**
* //这是Android调用js的方法 如:test方法在js中要有(可以给js中传递参数)
* 方法在web加载完成后 会调用下面方法来给js传递参数
* */
view.loadUrl("javascript:test('" + card_mo+ "','" + price+ "')"); //aa是js的函数test()的参数
}
}
}
);
}
}
更多Android进阶知识考研扫码免费领取!
《Android八大模块进阶资料》
这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶资料》,帮助大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
内容简介:《架构师筑基必备技能》、《Android百大框架源码解析》、《Android性能优化实战解析》、《高级kotlin强化实战》、《Android高级UI开源框架进阶解密》、《NDK模块开发》、《Flutter技术进阶》、《微信小程序开发》。附全套视频资料,包含面试合集、源码合集、开源框架合集。
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要《Android八大模块进阶资料》完整文档的可以加微信 即可免费领取!
目录
一、架构师筑基必备技能
1.深入理解Java泛型 2.注解深入浅出 3.并发编程 4.数据传输与序列化 5.Java虚拟机原理 6.高效IO ……
二、Android百大框架源码解析
1.Retrofit 2.0源码解析 2.Okhttp3源码解析 3.ButterKnife源码解析 4.MPAndroidChart 源码解析 5.Glide源码解析 6.Leakcanary 源码解析 7.Universal-lmage-Loader源码解析 8.EventBus 3.0源码解析 9.zxing源码分析 10.Picasso源码解析 11.LottieAndroid使用详解及源码解析 12.Fresco 源码分析——图片加载流程
三、Android性能优化实战解析
1.腾讯Bugly:对字符串匹配算法的一点理解
2.爱奇艺:安卓APP崩溃捕获方案——xCrash
3.字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
4.百度APP技术:Android H5首屏优化实践
5.支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
6.携程:从智行 Android 项目看组件化架构实践
7.网易新闻构建优化:如何让你的构建速度“势如闪电”?
…