Android与HTML JavaScript交互
16lz
2021-12-04
HTML(JavaScript)与Android的webView控件相互通信,今天仔细研究才发现,这两者相互调用是非常简单的,只需要在Android里面调用JavaScript的方法,以及在JavaScript里面调用Android里面的方法即可完成,思路很简单,具体执行起来其实也并不复杂,下面是具体的代码,以及代码注释:
HTML代码
Android端与HTML相互通信 Android与HTML相互通信示例
<--!h2标签说明-->Android消息
在此处输入想要发送到Android端的信息
在这里设置一个文本框,用来获取用户输入的文字消息然后应用到js里面进操作
//导包略过public class MainActivity extends Activity { private WebView webView; private EditText editText; private Button button; private TextView textView; //定义好所需要的控件 @SuppressLint("JavascriptInterface") //定义好SuppressLint("JavascriptInterface") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ByID(); //设置支持JavaScript语言,让WebView支持javascript的动作 webView.getSettings().setJavaScriptEnabled(true); //交互对象的添加,传入对象在html5界面的javascript中获取,该对象用于两者之间的交互。question,给JavaScript添加一个与之交互的接口,传入一个对象和该对象的名字,在html5端根据这个名字得到对象 //提供一个供h5交互的对象,并给对象标记个名字供js识别 webView.addJavascriptInterface( mUser= new User(), "user"); //自定义实现alert //要加载的页面 webView.loadUrl("http://10.0.2.2:63343/WWW/PHPwithHTML/test.html"); webView.setWebViewClient(new zzaWebViewClient()); }public void ByID(){ //关联ID webView = findViewById(R.id.webView); textView=findViewById(R.id.textView); button=findViewById(R.id.button); editText=findViewById(R.id.editText);} public class User { //在user类里面写两个方法供js调用 //一定要在每一个方法前面加入 @JavascriptInterface private String username; @JavascriptInterface public String getUsername() { //此方法直接返回AndroidUI页面里面的文本框的值 return editText.getText().toString(); } @JavascriptInterface public void setUsername(String username) { this.username = username; //将js里面传过来的值直接添加到UI页面的文本信息之中 textView.append(username+"\n"); Log.i("TAG", username); } } class zzaWebViewClient extends WebViewClient{ //不重新打开系统的浏览器加载网页 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }}
效果图:
JavaScript---->Android
Android----->JavaScript
更多相关文章
- Android/iOS内嵌Unity开发示例
- Android的Camera架构介绍
- android launcher 分析
- 比較具体的handle机制
- Application Fundamentals
- Android(安卓)Handler 用法
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
- Qt for Android(安卓)调用android原生接口分享图片或文字
- Android应用程序与SurfaceFlinger服务的连接过程分析