package android.source.tuangou.javascript; import android.os.Bundle; import android.source.tuangou.ActivityContainer; import android.source.tuangou.HeaderWebActivity; import android.source.tuangou.beans.CityList; import android.source.tuangou.framework.lbs.City; import android.source.tuangou.framework.store.beans.Preferences; import android.source.tuangou.framework.util.LogUtil; import android.source.tuangou.framework.util.StringUtil; import android.source.tuangou.framework.web.ScriptBridge; import android.source.tuangou.services.Umeng; import java.util.Iterator; import org.json.JSONObject; public class Bridge extends ScriptBridge{ public Bridge(){ } //获得city public String getCity(){ //获得city的id String s = Preferences.getInstance().get("current_city_id"); String s1; System.out.println("javascript call java: cityId = "+s); if (StringUtil.isEmpty(s).booleanValue()){ s1 = "{name: '北京', id: 1, pinyin: 'beijing'}"; } else{ //根据city的id来获取相应的city City city = CityList.getInstance().getCityById(s); if (city == null){ s1 = "{name: '北京', id: 1, pinyin: 'beijing'}"; } else{ StringBuilder stringbuilder = (new StringBuilder()).append("{name: '"); String s2 = city.name; StringBuilder stringbuilder1 = stringbuilder.append(s2).append("', id: "); String s3 = city.id; StringBuilder stringbuilder2 = stringbuilder1.append(s3).append(", pinyin: '"); String s4 = city.pinyin; s1 = stringbuilder2.append(s4).append("'}").toString(); } } System.out.println("javascript call java: city = "+s1); return s1; } public void getCityList(){ final String ret = CityList.getInstance().getAllJson().replace("\\n", "").trim(); final HeaderWebActivity ctx = getHeaderWebActivity(); System.out.println("getCityList ret = "+ret); Runnable3 mRunnable3 = new Runnable3(ctx, ret); runInHandlerThread(mRunnable3); } //获取顶部webActivity public HeaderWebActivity getHeaderWebActivity(){ HeaderWebActivity headerwebactivity; if (context == null){ LogUtil.e(new Exception("No header web activity found in Bridge")); headerwebactivity = null; } else{ headerwebactivity = (HeaderWebActivity)context; } return headerwebactivity; } public String getPreference(String s) { return Preferences.getInstance().get(s); } public void openWebActivity(String s){ System.out.println("javaScrpit call java: openWebActivity "+s); final HeaderWebActivity ctx = getHeaderWebActivity(); final Bundle data = new Bundle(); JSONObject jsonobject; Iterator iterator; try { //转换成JSONObject对象 jsonobject = StringUtil.parseJSON(s); iterator = jsonobject.keys(); while (iterator.hasNext()) { String s1 = iterator.next().toString(); String s2 = jsonobject.getString(s1); data.putString(s1, s2); } } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } openWebActivityRunnable mopenWebActivityRunnable = new openWebActivityRunnable(ctx,data); //运行线程 runInHandlerThread(mopenWebActivityRunnable); return; } public void savePreference(String key, String value){ System.out.println("javascript call java savePreference key = "+key +" value = "+value); Preferences.getInstance().save(key, value); } public void uiBack(final String args) { final HeaderWebActivity ctx = getHeaderWebActivity(); Runnable2 mRunnable2 = new Runnable2(ctx,args); runInHandlerThread(mRunnable2); } public void umengEvent(String s) { Umeng.umengEvent(getHeaderWebActivity(), s); } private class Runnable3 implements Runnable { final Bridge this$0; final HeaderWebActivity ctx; final String ret; public void run() { HeaderWebActivity headerwebactivity = ctx; String as[] = new String[1]; String s = ret; as[0] = s; headerwebactivity.callJSFunc("_on_citylist_finished", as); } Runnable3(HeaderWebActivity headerwebactivity, String s){ super(); this$0 = Bridge.this; ctx = headerwebactivity; ret = s; } } /* * 打开webActivity的runnable线程 * */ private class openWebActivityRunnable implements Runnable{ final Bridge this$0; final HeaderWebActivity ctx; final Bundle data; public void run(){ ActivityContainer activitycontainer = ctx.getStack(); //通过ActivityContainer打开webActivity activitycontainer.openWebActivity(data); } openWebActivityRunnable(HeaderWebActivity headerwebactivity,Bundle bundle){ super(); this$0 = Bridge.this; ctx = headerwebactivity; data = bundle; } } private class Runnable2 implements Runnable { final Bridge this$0; final String args; final HeaderWebActivity ctx; public void run() { ActivityContainer activitycontainer = ctx.getStack(); String s = args; activitycontainer.back(s); } Runnable2(HeaderWebActivity headerwebactivity ,String s){ super(); this$0 = Bridge.this; ctx = headerwebactivity; args = s; } } }