• android学习笔记之加载html页面及与js间的相互调用


    main中:

    <WebView 
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:id="@+id/webView"
         />

    Activity中:

    public class HtmlUIActivity extends Activity {
        private WebView webview;
        public Handler handler;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            webview = (WebView)this.findViewById(R.id.webView);
            webview.getSettings().setJavaScriptEnabled(true); //开启javascript支持
            webview.getSettings().setSupportZoom(false);
            webview.getSettings().setAppCacheEnabled(false);
            webview.getSettings().setAllowFileAccess(true);
            // java把数据传给js
            // js中可以利用“myjs”来调用show方法,myjs就相当于一个MyJavaScript对象
            // 可以调用MyJavaScript中的方法
            webview.addJavascriptInterface(new MyJavaScript(this, handler), "myjs");
            String url = "
    file:///android_asset/index.html"; // assets下的路径
            webview.loadUrl(url);    
        }
       
    }

    与js通信的类:

    public class MyJavaScript {
     private Context context;
     private WebView webview;
     private Handler handler;

     public MyJavaScript(Context context, Handler handler) {
      this.context = context;
      this.handler = handler;
      webview = (WebView)((Activity)context).findViewById(R.id.webView);
     }
     
     // 在java中调用js中的contactlist()方法,并传参数
     public void show() {
      handler.post(new Runnable() {
       
       @Override
       public void run() {
        webview.loadUrl("javascript:contactlist('" + query() + "')");
       }
      });
     }
     
     // 打电话(要加拨打权限)
     public void call(final String phone) {
      handler.post(new Runnable() {
       
       @Override
       public void run() {
        context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+phone)));
       }
      });
     }
     
     public String query() {
         try {
       JSONObject jsonObject = new JSONObject();
       jsonObject.put("id", 56);
       jsonObject.put("name", "胡一刀");
       jsonObject.put("phone", "151--323");
       
       JSONObject jsonObject2 = new JSONObject();
       jsonObject2.put("id", 96);
       jsonObject2.put("name", "胡勇");
       jsonObject2.put("phone", "151--326");
       JSONArray jsonArray = new JSONArray();
       jsonArray.put(jsonObject);
       jsonArray.put(jsonObject2);   
       return jsonArray.toString();
      } catch (JSONException e) {
      }
      return "";
        }
       
    }

  • 相关阅读:
    vs2015帮助文档
    算法之冒泡排序
    c++ 离散数学 群的相关判断及求解
    Entity Framwork(EF) 7——在现在数据库的甚而上开发MVC 新项目
    ASP.NET MVC 5 一 入门
    c# winform TreeView NODE(节点) 重命名或获取节点修改后的值
    xml 中转意字符&/使用方法
    entityframework 入门-来自微软
    c# 利用 两个TREEVIEW控件完成TEENODE的鼠标拖动操作
    Winform开发框架中实现多种数据库类型切换以及分拆数据库的支持
  • 原文地址:https://www.cnblogs.com/myphoebe/p/2294166.html
Copyright © 2020-2023  润新知