package android.source.tuangou.framework.web; import android.source.tuangou.framework.Config; import android.source.tuangou.framework.web.bridges.ConnectivityBridge; import android.source.tuangou.framework.web.bridges.LocationBridge; import android.source.tuangou.framework.web.bridges.LogBridge; import android.source.tuangou.framework.web.bridges.NetBridge; import android.source.tuangou.framework.web.bridges.SessionBridge; import android.source.tuangou.framework.web.bridges.StoreBridge; import android.source.tuangou.framework.web.bridges.WebBridge; import android.webkit.WebView; import java.util.*; /* * ScripHelper帮助类 * */ public class ScriptHelper{ Map bridges; public ScriptHelper(){ try { bridges = new HashMap(); NetBridge netbridge = new NetBridge(); Object obj = bridges.put("android_net", netbridge); LogBridge logbridge = new LogBridge(); Object obj1 = bridges.put("android_log", logbridge); SessionBridge sessionbridge = new SessionBridge(); Object obj2 = bridges.put("android_session", sessionbridge); StoreBridge storebridge = new StoreBridge(); Object obj3 = bridges.put("android_store", storebridge); LocationBridge locationbridge = new LocationBridge(); Object obj4 = bridges.put("android_lbs", locationbridge); WebBridge webbridge = new WebBridge(); Object obj5 = bridges.put("android_web", webbridge); ConnectivityBridge connectivitybridge = new ConnectivityBridge(); Object obj6 = bridges.put("android_connect", connectivitybridge); Iterator iterator = Config.JAVASCRIPT_BRIDGES.entrySet().iterator(); while(iterator.hasNext()){ java.util.Map.Entry entry = (java.util.Map.Entry) iterator.next(); String s = (String) entry.getKey(); Class class1 = Class.forName((String) entry.getValue()); Object obj7 = class1.newInstance(); Object obj8 = bridges.put(s, obj7); System.out.println("s = "+s +" obj7 = "+obj7); } } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } return; } //绑定javascript,建立通过javascript调用java的程序接口 public void bindJavascriptObject(WebActivity webactivity){ System.out.println("bindJavascriptObject bridges.size() = "+bridges.size()); if (bridges.size() > 0){ WebView webview = webactivity.getWebView(); String s; Object obj; Iterator iterator = bridges.entrySet().iterator(); while(iterator.hasNext()){ java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next(); s = (String)entry.getKey(); obj = entry.getValue(); System.out.println("bindJavascriptObject s = "+s+" obj = "+obj); //ScriptBridge设置context if (obj instanceof ScriptBridge){ ((ScriptBridge)obj).setContext(webactivity); } //添加javasscript接口,桥接java和javascript的一个函数,可以通过javascript调用java的程序接口 /* * 是实例化一个对象,在html的js中调用,第二个参数是实例化对象的别名, * 如果要使用这个obj,则在js中使用的名字就是interfaceName * */ webview.addJavascriptInterface(obj, s); } } } }