• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > WebView上实现Java与JavaScript交互,webviewjavascript

WebView上实现Java与JavaScript交互,webviewjavascript

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了webview javascript,scrollview webview,webview.clearview,webview websetting,webview websettings等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

WebView上实现Java与JavaScript交互,webviewjavascript


      在安卓开发上,考虑到开发效率和界面更新,有时使用WebView结合web页面技术,可以快速迭代地开发移动应用。WebView加载资源的速度并不慢,但是如果资源多了,就很慢。图片、css、js、html这些资源每个大概需要10-200ms,一般都是30ms以内就行了。但是,WebView是等全部资源加载完成才开始渲染的,所以最后用原生js来写,别用太多jQuery之类的框架,以改善用户体验。

  在混合开发中,有时会用到安卓原生SDK,如调用相机、查看相册、录音等,这就需要web页面中的JavaScript能调用到安卓SDK接口。由于Android的WebView是基于webkit内核的,集成了js与java互调的接口函数,可以方便地进行开发使用。

界面布局xml:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5 
 6     <WebView
 7         android:id="@+id/webView"
 8         android:layout_width="fill_parent"
 9         android:layout_height="fill_parent"
10         android:layout_above="@+id/linearLayout"
11          />
12     <LinearLayout 
13         android:id="@+id/linearLayout"
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:layout_alignParentBottom="true"
17         >
18         <Button
19             android:id="@+id/btn"
20             android:layout_width="wrap_content"
21             android:layout_height="wrap_content"
22             android:text="Java调用JavaScript接口"
23             >
24         </Button>
25     </LinearLayout>
26 </RelativeLayout>

 java代码:

 1 private WebView webView;
 2     private Handler handler = new Handler();
 3     private Button button;
 4     @SuppressLint("SetJavaScriptEnabled")
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         webView = (WebView) findViewById(R.id.webView);
10         
11         //自定义webView设置
12         WebSettings webSettings = webView.getSettings();
13         webSettings.setJavaScriptEnabled(true);
14         webView.addJavascriptInterface(new MyJavaScriptInterface(MainActivity.this), "javaInterface");
15         //如果注释了,javaScript中的alert弹窗等就会失效,不显示
16         webView.setWebChromeClient(new WebChromeClient());
17         //webView.setWebChromeClient(new MyWebChromeClient());
18         
19         //测试webView加载是否正常
20         //webView.loadUrl("http://www.baidu.com/");
21         webView.setWebViewClient(new HelloWebView());
22         webView.loadUrl("file:///android_asset/index.html");
23         
24         button = (Button) findViewById(R.id.btn);
25         button.setOnClickListener(new View.OnClickListener() {
26             
27             @Override
28             public void onClick(View v) {
29                 String param = "bb";
30                 webView.loadUrl("javascript:showTitle('"+param+"')");
31             }
32         });
33     }
34 
35     private  class HelloWebView extends WebViewClient{
36         @Override
37         public boolean shouldOverrideUrlLoading(WebView view, String url) {
38             // TODO Auto-generated method stub
39             view.loadUrl(url);
40             return true;
41         }        
42     }
43     
44     /**
45      * 在主线程中定义JavaScript可以调用的安卓接口
46      * @author CHQ
47      * API 17以后,每个被调用java函数都要叫声明 @JavascriptInterface
48      */
49     public class MyJavaScriptInterface{
50         private Context context;
51         
52         public MyJavaScriptInterface(Context context){
53             this.context = context;
54         }
55         @JavascriptInterface
56         public String toString() {
57             return "this is interface";
58         }
59         @JavascriptInterface
60         public void clickOnAndroid() {
61             Toast.makeText(context, "js调用安卓:....", Toast.LENGTH_SHORT).show();
62         }
63         /**
64          * 安卓调用JS接口,要开启子线程调用
65          */
66         @JavascriptInterface
67         public void call() {
68             Toast.makeText(context, "安卓客户端再调用JavaScript接口", Toast.LENGTH_SHORT).show();
69             handler.post(new Runnable() {            
70                 @Override
71                 public void run() {
72                     String param = "bb";




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • WebView上实现Java与JavaScript交互,webviewjavascript

相关文章

  • 2017-05-26Android View体系之从源码解析Scroller的相关内容
  • 2017-05-26安卓组件------列表选择框,安卓组件------列表
  • 2017-05-26安卓第十三天笔记-服务(Service),安卓第十三天
  • 2017-05-26Hello,Android
  • 2017-05-26安卓开发与分析者的利器--安卓右键工具
  • 2017-05-26Android中的属性动画(Property Animation)——Android开发艺术探索笔记
  • 2017-05-26onSaveInstanceState和onRestoreInstanceState触发的时机,onsaveinstancestate
  • 2017-05-26Python安装setuptools遇到的MARKER_EXPR错误
  • 2017-05-26Android特效专辑(八)——实现心型起泡飞舞的特效,让你的APP瞬间暖心
  • 2017-05-224.2.3 Service精通

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Linux大文件已删除,但df查看已使用的空间并未减少解决
    • React Native Android入门实战及深入源码分析系列(2)——React Native源码编译
    • [better practice系列]Android处理好activity正确情况下的生命周期和意外情况下的生命周期浅析
    • 仿拉手团购App6--注册界面,仿拉手团购app6--
    • Android—Service与Activity的交互,androidactivity
    • 2.3.3 Button(按钮)与ImageButton(图像按钮)
    • 微信支付,信支付
    • Android中开发工具Android Studio修改created用户(windows环境),androidcreated
    • Android通知栏沉浸式/透明化完整解决方案,root不完整解决方法
    • Android 操作数据库的框架——greenDAO的学习

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有