Преглед изворни кода

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into draft

# Conflicts:
#	WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OABean.java
FANGLH пре 9 година
родитељ
комит
a8a7de2171

+ 1 - 1
WeiChat/build.gradle

@@ -13,7 +13,7 @@ android {
     }
     signingConfigs {
         config {
-            storeFile file('C:/Users/FANGlh/Desktop/UU5.5.1/applicationsignname[20150409]')
+            storeFile file('E:/CompanyProject/applicationsignname[20150409]')
             storePassword '13237658359'
             keyAlias 'jie-20150409'
             keyPassword '13237658359'

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SubscriptionMessage.java

@@ -1,9 +1,11 @@
 package com.xzjmyk.pm.activity.bean.message;
 
+import java.io.Serializable;
+
 /**
  * Created by gongpm on 2016/6/3.
  */
-public class SubscriptionMessage {
+public class SubscriptionMessage implements Serializable{
 
     private int ID_;
     private int NUM_ID_;        //订阅id

+ 19 - 16
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OABean.java

@@ -40,27 +40,12 @@ public class OABean implements Parcelable {
     private String vp_custcode;//联系人编号
     private String nichestep;//沟通阶段
     private String vp_contact;//联系人
-    private String vp_cucontact;//pc联系人
+    private String vp_cucontact;//联系人
 
-    public String getVp_cucontact() {
-        return vp_cucontact;
-    }
-
-    public void setVp_cucontact(String vp_cucontact) {
-        this.vp_cucontact = vp_cucontact;
-    }
 
     public OABean() {
     }
 
-    public String getVp_contact() {
-        return vp_contact;
-    }
-
-    public void setVp_contact(String vp_contact) {
-        this.vp_contact = vp_contact;
-    }
-
     public int getType() {
         return type;
     }
@@ -269,6 +254,22 @@ public class OABean implements Parcelable {
         this.nichestep = nichestep;
     }
 
+    public String getVp_contact() {
+        return vp_contact;
+    }
+
+    public void setVp_contact(String vp_contact) {
+        this.vp_contact = vp_contact;
+    }
+
+    public String getVp_cucontact() {
+        return vp_cucontact;
+    }
+
+    public void setVp_cucontact(String vp_cucontact) {
+        this.vp_cucontact = vp_cucontact;
+    }
+
     protected OABean(Parcel in) {
         type = in.readInt();
         startdate = in.readString();
@@ -297,6 +298,7 @@ public class OABean implements Parcelable {
         vp_custcode = in.readString();
         nichestep = in.readString();
         vp_contact = in.readString();
+        vp_cucontact = in.readString();
     }
 
     @Override
@@ -328,6 +330,7 @@ public class OABean implements Parcelable {
         dest.writeString(vp_custcode);
         dest.writeString(nichestep);
         dest.writeString(vp_contact);
+        dest.writeString(vp_cucontact);
     }
 
     @Override

+ 73 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java

@@ -24,6 +24,7 @@ import com.umeng.socialize.bean.SHARE_MEDIA;
 import com.umeng.socialize.media.UMImage;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.message.SubscriptionMessage;
 import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
@@ -36,13 +37,14 @@ import org.apache.http.cookie.Cookie;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 
 /**
  * Created by Administrator on 2016/4/5.
  */
-public class WebViewCommActivity extends BaseActivity {
+public class WebViewCommActivity extends BaseActivity implements View.OnClickListener {
     public static final String TIME = "WebViewCommActivity_time";
     private PullToRefreshWebView webView;
     private ProgressBar pb;
@@ -54,6 +56,14 @@ public class WebViewCommActivity extends BaseActivity {
     private boolean isStartApp = false;
     private boolean isCookie;
     private int reCode = 201;
+
+    private ArrayList<SubscriptionMessage> mSubscriptionMessages;
+    private String mSubsAct;
+    private int mPosition;
+
+    private String mSubsurl;
+    private TextView mPreTv;
+    private TextView mNextTv;
     private  Handler hander = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -94,12 +104,44 @@ public class WebViewCommActivity extends BaseActivity {
         Intent intent = getIntent();
         setContentView(R.layout.activity_webview);
         webView = (PullToRefreshWebView) findViewById(R.id.webView_listview);
+        mPreTv = (TextView) findViewById(R.id.web_previous_tv);
+        mNextTv = (TextView) findViewById(R.id.web_next_tv);
+
         isStartApp = false;
         pb = (ProgressBar) findViewById(R.id.pb);
         pb.setMax(100);
         url = intent.getStringExtra("url");
+        mSubsurl = intent.getStringExtra("url");
         isCookie = intent.getBooleanExtra("cookie", false);
         String StartApp = intent.getStringExtra("isStartApp");//参数账套
+
+        mSubsAct = intent.getStringExtra("subsact");
+        mPosition = intent.getIntExtra("position",-1);
+        mSubscriptionMessages = (ArrayList<SubscriptionMessage>) intent.getSerializableExtra("subsdata");
+
+        if (mSubsAct != null && mSubsAct.equals("subsDetail")){
+            url = mSubsurl  + "?numId=" + mSubscriptionMessages.get(mPosition).getNUM_ID_()
+                    + "&mainId=" + mSubscriptionMessages.get(mPosition).getINSTANCE_ID_()
+                    + "&insId=" + mSubscriptionMessages.get(mPosition).getID_()
+                    + "&title=" + mSubscriptionMessages.get(mPosition).getTITLE_();
+            if (mSubscriptionMessages.size() == 1){
+                mPreTv.setVisibility(View.GONE);
+                mNextTv.setVisibility(View.GONE);
+            }else if (mPosition == 0){
+                mPreTv.setVisibility(View.GONE);
+                mNextTv.setVisibility(View.VISIBLE);
+            }else if (mPosition == mSubscriptionMessages.size() - 1){
+                mPreTv.setVisibility(View.VISIBLE);
+                mNextTv.setVisibility(View.GONE);
+            }else {
+                mPreTv.setVisibility(View.VISIBLE);
+                mNextTv.setVisibility(View.VISIBLE);
+            }
+
+            mPreTv.setOnClickListener(this);
+            mNextTv.setOnClickListener(this);
+        }
+
         if (!StringUtils.isEmpty(StartApp)) {
             if (StartApp.equals("true")) {
                 isStartApp = true;
@@ -182,6 +224,36 @@ public class WebViewCommActivity extends BaseActivity {
         super.onResume();
     }
 
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()){
+            case R.id.web_previous_tv:
+                mPosition--;
+                break;
+            case R.id.web_next_tv:
+                mPosition++;
+                break;
+        }
+        getSupportActionBar().setTitle(mSubscriptionMessages.get(mPosition).getTITLE_());
+        if (mPosition == 0){
+            mPreTv.setVisibility(View.GONE);
+            mNextTv.setVisibility(View.VISIBLE);
+        }else if (mPosition == mSubscriptionMessages.size() - 1){
+            mPreTv.setVisibility(View.VISIBLE);
+            mNextTv.setVisibility(View.GONE);
+        }else {
+            mPreTv.setVisibility(View.VISIBLE);
+            mNextTv.setVisibility(View.VISIBLE);
+        }
+        url = mSubsurl  + "?numId=" + mSubscriptionMessages.get(mPosition).getNUM_ID_()
+                + "&mainId=" + mSubscriptionMessages.get(mPosition).getINSTANCE_ID_()
+                + "&insId=" + mSubscriptionMessages.get(mPosition).getID_()
+                + "&title=" + mSubscriptionMessages.get(mPosition).getTITLE_();
+        Map<String,String> headers=new HashMap<>();
+        headers.put("client-name","uasClient");
+        webView.getRefreshableView().loadUrl(url,headers);
+    }
+
 
     public class WebChromeClient extends android.webkit.WebChromeClient {
         @Override

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java

@@ -128,7 +128,7 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
             tv_date_start.setText(bean.getStartdate() == null ? "未填写" : bean.getStartdate());
             tv_date_end.setText(bean.getEnddate() == null ? "未填写" : bean.getEnddate());
             tv_customer_login.setText(bean.getClient() == null ? "未填写" : bean.getClient());
-            tv_linksman_login.setText(bean.getVp_contact() == null ? "未填写" : bean.getVp_contact());
+            tv_linksman_login.setText(StringUtils.isEmpty(bean.getVp_contact()) ? (StringUtils.isEmpty(bean.getVp_cucontact()) ? "未填写" : bean.getVp_cucontact()) : bean.getVp_contact());
             tv_address_login.setText(bean.getAddress() == null ? "未填写" : bean.getAddress());
             tv_visit_theme.setText(bean.getRemark() == null ? "未填写" : bean.getRemark());
             tv_visit_steps.setText(bean.getNichestep() == null ? "" : bean.getNichestep());

+ 0 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AlarmaActivity.java

@@ -37,7 +37,6 @@ public class AlarmaActivity extends BaseActivity implements View.OnClickListener
 
     private boolean isAlarm;//判断是否为提醒
     private boolean isAuto;//判断是否为自动
-
     private AlarmManage manage;
 
     @Override

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java

@@ -126,6 +126,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                         companyY = Double.parseDouble(jsonObject.containsKey("latitude") ? (StringUtils.isEmpty(jsonObject.getString("latitude")) ? "0" : jsonObject.getString("latitude")) : "0");
                         CommonUtil.setSharedPreferences(ct, "companyX", (float) companyX);
                         CommonUtil.setSharedPreferences(ct, "companyY", (float) companyY);
+                        CommonUtil.setSharedPreferences(ct, "distance",  companyDistance);
                         unoffice_mm.setText(setDistance());
                     }
                     if (jsonObject.getBoolean("success")) {

+ 19 - 20
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java

@@ -347,8 +347,7 @@ public class ViewUtil {
         Map<String, String> params = new HashMap<String, String>();
         params.put("j_username", phone);
         params.put("j_password", password);
-        startNetThread(url, params, handler, Constants.SUCCESS_B2B, null, null,
-                "post");
+        startNetThread(url, params, handler, Constants.SUCCESS_B2B, null, null, "post");
     }
 
 
@@ -392,7 +391,7 @@ public class ViewUtil {
                         boolean isNetHas = CommonUtil.isNetWorkConnected(ct);
                         if (isNetHas)
                             ToastMessage(MyApplication.getInstance(), "系统内部错误!", Style.holoRedLight, 3000);
-                     }
+                    }
                     break;
                 default:
                     break;
@@ -518,23 +517,23 @@ public class ViewUtil {
 //                                        for (int j2 = 0; j2 < erpEntities.size(); j2++) {
 //                                            if (text.toString().equals(
 //                                                    erpEntities.get(j2).getName())) {
-                                             
-                                                LoginEntity entity = erpEntities
-                                                        .get(which);
-                                                erp_phone = phone;
-                                                erp_password = password;
-                                                erp_username = entity.getAccount();
-                                                erp_master = entity.getMaster();
-                                                erp_baseurl = entity.getWebsite();
-                                                erp_company = entity.getName();
-                                                erp_uu = String.valueOf(entity
-                                                        .getEnuu());
-                                                erp_masterId = String.valueOf(entity.getMasterId());
-                                                LoginERPTask(entity.getWebsite(),
-                                                        entity.getMaster(), phone, password);
-                                                //清除账套列表缓存
-                                                CommonUtil.clearSharedPreferences(ct, "erp_masterlist");
-                                                
+
+                                        LoginEntity entity = erpEntities
+                                                .get(which);
+                                        erp_phone = phone;
+                                        erp_password = password;
+                                        erp_username = entity.getAccount();
+                                        erp_master = entity.getMaster();
+                                        erp_baseurl = entity.getWebsite();
+                                        erp_company = entity.getName();
+                                        erp_uu = String.valueOf(entity
+                                                .getEnuu());
+                                        erp_masterId = String.valueOf(entity.getMasterId());
+                                        LoginERPTask(entity.getWebsite(),
+                                                entity.getMaster(), phone, password);
+                                        //清除账套列表缓存
+                                        CommonUtil.clearSharedPreferences(ct, "erp_masterlist");
+
 //                                            }
 //                                        }
                                     }

+ 25 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmReceiver.java

@@ -108,31 +108,45 @@ public class AlarmReceiver extends BroadcastReceiver {
         form.put("cl_phone", MyApplication.getInstance().mLoginUser.getTelephone());
         form.put("cl_emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
         form.put("cl_emname", MyApplication.getInstance().mLoginUser.getNickName());
+        boolean isp = isPlay(ct, form);
+        if (!isp) return;//不符合打卡
+        String formStore = StringUtils.mapToJson(form);
+        param.put("caller", "CardLog");
+        param.put("formStore", formStore);
+        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "mobile/saveCardLog.action";
+        param.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x11, null, null, "get");
+    }
+
+    private boolean isPlay(Context ct, Map<String, Object> form) {
         try {
+            //判断是否符合打卡
             BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
             form.put("cl_address", helper.getAddress());
             form.put("cl_location", helper.getName());
             double companyX = CommonUtil.getSharedPreferencesfloat(ct, "companyX", 0);
             double companyY = CommonUtil.getSharedPreferencesfloat(ct, "companyY", 0);
+            int comDistance = CommonUtil.getSharedPreferencesInt(ct, "distance", 0);
             double latitude = helper.getLatitude();
             double longitude = helper.getLongitude();
             String distance = BaiduMapUtil.getInstence().getDistance(companyX, companyY, latitude, longitude);
-            form.put("cl_distance", distance);
+            if (comDistance < Float.valueOf(distance)) {//规定地址<实际地址  不符合
+                helper.requestLocation();//当不符合时候提交定位,并不执行打卡签到
+                return false;
+            } else {
+                form.put("cl_distance", distance);
+                return true;
+            }
         } catch (NullPointerException e) {
-
+            return false;
         } catch (SQLException e) {
-
+            return false;
         }
-        String formStore = StringUtils.mapToJson(form);
-        param.put("caller", "CardLog");
-        param.put("formStore", formStore);
-        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "mobile/saveCardLog.action";
-        param.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
-        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
-        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x11, null, null, "get");
     }
 
+
     //获取打卡记录 date:yyyy-MM-dd
     private void loadLog() {
         String date = TimeUtils.s_long_2_str(System.currentTimeMillis());

+ 16 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java

@@ -6,6 +6,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -26,6 +27,7 @@ import com.xzjmyk.pm.activity.bean.message.SubscriptionMessage;
 import com.xzjmyk.pm.activity.db.dao.SubscriptionDao;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.SubcribeManageActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
@@ -79,6 +81,7 @@ public class SubscriptionActivity extends BaseActivity {
             switch (msg.what) {
                 case LOAD_NET:
                     String message = msg.getData().getString("result");
+                    Log.i("handleSubs", message);
                     if (message != null && JSON.parseObject(message).containsKey("data")) {
                         String str = JSON.parseObject(message).getJSONArray("data").toJSONString();
                         SubscriptionMessages = JSON.parseArray(str, SubscriptionMessage.class);
@@ -148,7 +151,7 @@ public class SubscriptionActivity extends BaseActivity {
                 calendar.set(Calendar.MINUTE, 0);
                 calendar.set(Calendar.SECOND, 0);
                 newlong = calendar.getTimeInMillis();
-                oldTime=newlong;
+                oldTime = newlong;
                 loadNetData(newlong);//获取当天的网络数据
             }
 
@@ -480,9 +483,8 @@ public class SubscriptionActivity extends BaseActivity {
                 @Override
                 public void onClick(View view) {
                     SubscriptionMessage bean = sortSubsrciprions.get(position).beans.get(i);
-                    String url = baseUrl + "common/charts/mobileCharts.action?" + "numId=" + bean.getNUM_ID_() +
-                            "&mainId=" + bean.getINSTANCE_ID_() + "&insId=" + bean.getID_() +
-                            "&title=" + bean.getTITLE_();
+                    String url = baseUrl + "common/charts/mobileCharts.action";
+                    Log.i("weburl: ", url);
                     String chche = bean.getTITLE_() == null ? "" : bean.getTITLE_();
 //                    String title = TimeUtils.long2str(sortSubsrciprions.get(position).tiem, "yyyyMMdd") + "  " + bean.getTITLE_();
                     String title = bean.getTITLE_();
@@ -491,7 +493,16 @@ public class SubscriptionActivity extends BaseActivity {
                         title = bean.getTITLE_();
                     }
 
-                    ViewUtil.webLinks(activity, url, title, true);
+//                    ViewUtil.webLinks(activity, url, title, true);
+                    Intent intent_web = new Intent(ct, WebViewCommActivity.class);
+                    intent_web.putExtra("url", url);
+                    intent_web.putExtra("p", title);
+                    intent_web.putExtra("cookie", true);
+                    intent_web.putExtra("subsact", "subsDetail");
+                    intent_web.putExtra("position", i);
+                    intent_web.putExtra("subsdata", beans);
+                    ct.startActivity(intent_web);
+
                     if (bean.getSTATUS_() == 0) {//当点击未读消息
                         SubscriptionDao.getInstance().UpdateStatus(bean.getID_() + "", true);
                         sortSubsrciprions.get(position).beans.get(i).setSTATUS_(-1);

+ 1 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/MacAndIDUtil.java

@@ -3,7 +3,6 @@ package com.xzjmyk.pm.activity.util;
 import android.content.Context;
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
-import android.util.Log;
 
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
@@ -39,7 +38,7 @@ public class MacAndIDUtil {
 
 
     private boolean legitimateMac(String mac) {
-        return !mac.contains("00:00:00");
+        return !StringUtils.isEmpty(mac) && !mac.contains("00:00:00");
     }
 
     /*通过wifiInfo获取ip*/

+ 217 - 221
WeiChat/src/main/java/com/xzjmyk/pm/activity/volley/StringJsonObjectRequest.java

@@ -28,248 +28,244 @@ import java.util.zip.GZIPInputStream;
 
 /**
  * 通过字符串参数集,请求json参数,并序列号为JsonModel对象
- * @author dty
- * 
+ *
  * @param <T>
+ * @author dty
  */
 public class StringJsonObjectRequest<T> extends Request<String> {
 
-	private Listener<T> mListener;
-	private Class<T> mClazz;
-	private Map<String, String> mParams;
-	private boolean mGzipEnable = false;
-	private boolean mHmacEnable = false;
-	/**
-	 *
-	 * 请求方式post
-	 *
-	 * @param url
-	 *            url地址
-	 * @param listener
-	 */
-	public StringJsonObjectRequest(String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz, Map<String, String> params) {
-		this(Method.POST, url, errorListener, listener, clazz, params);
-	}
+    private Listener<T> mListener;
+    private Class<T> mClazz;
+    private Map<String, String> mParams;
+    private boolean mGzipEnable = false;
+    private boolean mHmacEnable = false;
+
+    /**
+     * 请求方式post
+     *
+     * @param url      url地址
+     * @param listener
+     */
+    public StringJsonObjectRequest(String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz, Map<String, String> params) {
+        this(Method.POST, url, errorListener, listener, clazz, params);
+    }
+
+    /**
+     * @param method   请求方式,post或者get
+     * @param url      url地址
+     * @param listener
+     */
+    public StringJsonObjectRequest(int method, String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz,
+                                   Map<String, String> params) {
+        super(method, url, errorListener);
+        mListener = listener;
+        mClazz = clazz;
+        mParams = params;
+        if (method == Method.GET) {
+            spliceGetUrl();
+        }
+    }
+
+    /**
+     * @param method   请求方式,post或者get   是否启用Hmac加密
+     * @param url      url地址
+     * @param listener
+     */
+    public StringJsonObjectRequest(int method, String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz,
+                                   Map<String, String> params, boolean mHmacEnable) {
+        super(method, url, errorListener);
+        mListener = listener;
+        mClazz = clazz;
+        mParams = params;
+        this.mHmacEnable = mHmacEnable;
+        if (method == Method.GET) {
+            spliceGetUrl();
+        }
+    }
 
-	/**
-	 *
-	 * @param method
-	 *            请求方式,post或者get
-	 * @param url
-	 *            url地址
-	 * @param listener
-	 */
-	public StringJsonObjectRequest(int method, String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz,
-								   Map<String, String> params) {
-		super(method, url, errorListener);
-		mListener = listener;
-		mClazz = clazz;
-		mParams = params;
-		if (method == Method.GET) {
-			spliceGetUrl();
-		}
-	}
+    public void setGzipEnable(boolean eanble) {
+        mGzipEnable = eanble;
+    }
 
-	/**
-	 * @param method   请求方式,post或者get   是否启用Hmac加密
-	 * @param url      url地址
-	 * @param listener
-	 */
-	public StringJsonObjectRequest(int method, String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz,
-								   Map<String, String> params, boolean mHmacEnable) {
-		super(method, url, errorListener);
-		mListener = listener;
-		mClazz = clazz;
-		mParams = params;
-		this.mHmacEnable = mHmacEnable;
-		if (method == Method.GET) {
-			spliceGetUrl();
-		}
-	}
+    /**
+     * @注释:是否加密
+     */
+    public void setmHmacEnable(boolean mHmacEnable) {
+        this.mHmacEnable = mHmacEnable;
+    }
 
-	public void setGzipEnable(boolean eanble) {
-		mGzipEnable = eanble;
-	}
+    /* Post 参数设置 */
+    @Override
+    protected Map<String, String> getParams() throws AuthFailureError {
+        if (getMethod() != Method.POST && getMethod() != Method.PUT) {
+            return null;
+        }
+        if (FastVolley.DEBUG) {
+            Log.d(FastVolley.TAG, "url:" + getUrl());
+            if (mParams != null) {
+                for (String key : mParams.keySet()) {
+                    Log.d(FastVolley.TAG, "key:" + key + " ------  " + "value:" + mParams.get(key));
+                }
+            }
+        }
+        return mParams;
+    }
 
-	/**
-	 * @注释:是否加密
-	 */
-	public void setmHmacEnable(boolean mHmacEnable) {
-		this.mHmacEnable = mHmacEnable;
-	}
-	/* Post 参数设置 */
-	@Override
-	protected Map<String, String> getParams() throws AuthFailureError {
-		if (getMethod() != Method.POST && getMethod() != Method.PUT) {
-			return null;
-		}
-		if (FastVolley.DEBUG) {
-			Log.d(FastVolley.TAG, "url:" + getUrl());
-			if (mParams != null) {
-				for (String key : mParams.keySet()) {
-					Log.d(FastVolley.TAG, "key:" + key + " ------  " + "value:" + mParams.get(key));
-				}
-			}
-		}
-		return mParams;
-	}
+    @Override
+    public Map<String, String> getHeaders() throws AuthFailureError {
+        if (mGzipEnable) {
+            Map<String, String> headers = new HashMap<String, String>();
+            headers.put("Charset", "UTF-8");
+            headers.put("Content-Type", "application/x-javascript");
+            headers.put("Accept-Encoding", "gzip,deflate");
+            if (mParams != null) {
+                headers.put("Cookie", "JSESSIONID=" + mParams.get("sessionId"));
+                Log.i("downloadCompanysContact", "JSESSIONID=" + mParams.get("sessionId"));
+            }
 
-	@Override
-	public Map<String, String> getHeaders() throws AuthFailureError {
-		if (mGzipEnable) {
-			Map<String, String> headers = new HashMap<String, String>();
-			headers.put("Charset", "UTF-8");
-			headers.put("Content-Type", "application/x-javascript");
-			headers.put("Accept-Encoding", "gzip,deflate");
-			if (mParams!=null) {
-				headers.put("Cookie", "JSESSIONID=" + mParams.get("sessionId"));
-				Log.i("downloadCompanysContact", "JSESSIONID=" + mParams.get("sessionId"));
-			}
-			
-			//headers.put("Accept-Encoding", "gzip,deflate");
-			return headers;
-		} else {
-			return super.getHeaders();
-		}
-	}
+            //headers.put("Accept-Encoding", "gzip,deflate");
+            return headers;
+        } else {
+            return super.getHeaders();
+        }
+    }
 
-	/* Get 参数拼接 */
-	private void spliceGetUrl() {
-		if (mParams != null && mParams.size() > 0) {
-			String url = getUrl();
-			if (TextUtils.isEmpty(url)) {
-				return;
-			}
-			if (url != null && !url.contains("?")) {
-				url += "?";
-			}
-			String param = url;
-			for (String key : mParams.keySet()) {
-				param += (key + "=" + mParams.get(key) + "&");
-			}
+    /* Get 参数拼接 */
+    private void spliceGetUrl() {
+        if (mParams != null && mParams.size() > 0) {
+            String url = getUrl();
+            if (TextUtils.isEmpty(url)) {
+                return;
+            }
+            if (url != null && !url.contains("?")) {
+                url += "?";
+            }
+            String param = url;
+            for (String key : mParams.keySet()) {
+                param += (key + "=" + mParams.get(key) + "&");
+            }
 
-			if (mHmacEnable) {//是否加密
-				param += "_timestamp=" + System.currentTimeMillis();
-				param += "&_signature=" + HmacUtils.encode(param);
-				Log.i("HmacHttp", "url:" + param);
-			} else {
-				param = param.substring(0, param.length() - 1);// 去掉最后一个&
-			}
-			setUrl(param);
-		}
-	}
+            if (mHmacEnable) {//是否加密
+                param += "_timestamp=" + System.currentTimeMillis();
+                param += "&_signature=" + HmacUtils.encode(param);
+                Log.i("HmacHttp", "url:" + param);
+            } else {
+                param = param.substring(0, param.length() - 1);// 去掉最后一个&
+            }
+            setUrl(param);
+        }
+    }
 
-	@Override
-	protected void deliverResponse(String arg0) {
-		Log.i("deliverResponse", "result deliverResponse:" + arg0);
-		if (mListener == null) {
-			return;
-		}
-		if (FastVolley.DEBUG) {
-			Log.d(FastVolley.TAG, "StringJsonRequest deliverResponse:" + arg0);
-		}
+    @Override
+    protected void deliverResponse(String arg0) {
+        Log.i("deliverResponse", "result deliverResponse:" + arg0);
+        if (mListener == null) {
+            return;
+        }
+        if (FastVolley.DEBUG) {
+            Log.d(FastVolley.TAG, "StringJsonRequest deliverResponse:" + arg0);
+        }
 
-		if (TextUtils.isEmpty(arg0)) {
-			deliverError(new VolleyError(new NetworkError()));
-			return;
-		}
-		ObjectResult<T> result = new ObjectResult<T>();
-		result.setResultData(arg0);
-		try {
-			JSONObject jsonObject = JSON.parseObject(arg0);//解析json有异常的风险
-			result.setResultCode(jsonObject.getIntValue(Result.RESULT_CODE));
-			result.setResultMsg(jsonObject.getString(Result.RESULT_MSG));
+        if (TextUtils.isEmpty(arg0)) {
+            deliverError(new VolleyError(new NetworkError()));
+            return;
+        }
+        ObjectResult<T> result = new ObjectResult<T>();
+        result.setResultData(arg0);
+        try {
+            JSONObject jsonObject = JSON.parseObject(arg0);//解析json有异常的风险
+            result.setResultCode(jsonObject.getIntValue(Result.RESULT_CODE));
+            result.setResultMsg(jsonObject.getString(Result.RESULT_MSG));
 //			开始解析数据
-			if (!mClazz.equals(Void.class)) {
-				String data = jsonObject.getString(Result.DATA);
-				if (!TextUtils.isEmpty(data)) {
-					if (mClazz.equals(String.class) || mClazz.getSuperclass().equals(Number.class)) {// String
-																										// 类型或者基本数据类型(Integer)
-						result.setData(castValue(mClazz, data));
-					} else {
-						result.setData(JSON.parseObject(data, mClazz));
-					}
+            if (!mClazz.equals(Void.class)) {
+                String data = jsonObject.getString(Result.DATA);
+                if (!TextUtils.isEmpty(data)) {
+                    if (mClazz.equals(String.class) || mClazz.getSuperclass().equals(Number.class)) {// String
+                        result.setData(castValue(mClazz, data));
+                    } else {
+                        result.setData(JSON.parseObject(data, mClazz));
+                    }
 
-				}
-			}
+                }
+            }
 
-		} catch (Exception e) {
-			e.printStackTrace();
-			Log.i("exception", "JSON解析异常");
-		}
+        } catch (Exception e) {
+            e.printStackTrace();
+            Log.i("exception", "JSON解析异常");
+        }
 
-		mListener.onResponse(result);
-	}
+        mListener.onResponse(result);
+    }
 
-	private T castValue(Class<T> clazz, String data) {
-		try {
-			Constructor<T> constructor = clazz.getConstructor(String.class);
-			return constructor.newInstance(data);
-		} catch (NoSuchMethodException e) {
-			e.printStackTrace();
-		} catch (InstantiationException e) {
-			e.printStackTrace();
-		} catch (IllegalAccessException e) {
-			e.printStackTrace();
-		} catch (IllegalArgumentException e) {
-			e.printStackTrace();
-		} catch (InvocationTargetException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
+    private T castValue(Class<T> clazz, String data) {
+        try {
+            Constructor<T> constructor = clazz.getConstructor(String.class);
+            return constructor.newInstance(data);
+        } catch (NoSuchMethodException e) {
+            e.printStackTrace();
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        } catch (InvocationTargetException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 
-	@Override
-	protected Response<String> parseNetworkResponse(NetworkResponse response) {
-		Log.i("parseNetworkResponse", "result parseNetworkResponse:" + new String(response.data));
-		String parsed;
-		try {
-			if (mGzipEnable) {
-				parsed = getRealString(response.data);
-			} else {
-				parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
-			}
-		} catch (UnsupportedEncodingException e) {
-			parsed = new String(response.data);
-		}
-		return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));
-	}
+    @Override
+    protected Response<String> parseNetworkResponse(NetworkResponse response) {
+        Log.i("parseNetworkResponse", "result parseNetworkResponse:" + new String(response.data));
+        String parsed;
+        try {
+            if (mGzipEnable) {
+                parsed = getRealString(response.data);
+            } else {
+                parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
+            }
+        } catch (UnsupportedEncodingException e) {
+            parsed = new String(response.data);
+        }
+        return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));
+    }
 
-	private int getShort(byte[] data) {
-		return (data[0] << 8) | data[1] & 0xFF;
-	}
+    private int getShort(byte[] data) {
+        return (data[0] << 8) | data[1] & 0xFF;
+    }
 
-	/**
-	 * GZip解压缩
-	 */
-	private String getRealString(byte[] data) {
-		byte[] h = new byte[2];
-		h[0] = (data)[0];
-		h[1] = (data)[1];
-		int head = getShort(h);
-		boolean t = head == 0x1f8b;
-		InputStream in;
-		StringBuilder sb = new StringBuilder();
-		try {
-			ByteArrayInputStream bis = new ByteArrayInputStream(data);
-			if (t) {
-				in = new GZIPInputStream(bis);
-			} else {
-				in = bis;
-			}
-			BufferedReader r = new BufferedReader(new InputStreamReader(in), 1000);
-			for (String line = r.readLine(); line != null; line = r.readLine()) {
-				sb.append(line);
-			}
-			in.close();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return sb.toString();
-	}
+    /**
+     * GZip解压缩
+     */
+    private String getRealString(byte[] data) {
+        byte[] h = new byte[2];
+        h[0] = (data)[0];
+        h[1] = (data)[1];
+        int head = getShort(h);
+        boolean t = head == 0x1f8b;
+        InputStream in;
+        StringBuilder sb = new StringBuilder();
+        try {
+            ByteArrayInputStream bis = new ByteArrayInputStream(data);
+            if (t) {
+                in = new GZIPInputStream(bis);
+            } else {
+                in = bis;
+            }
+            BufferedReader r = new BufferedReader(new InputStreamReader(in), 1000);
+            for (String line = r.readLine(); line != null; line = r.readLine()) {
+                sb.append(line);
+            }
+            in.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return sb.toString();
+    }
 
-	public interface Listener<T> {
-		void onResponse(ObjectResult<T> result);
-	}
+    public interface Listener<T> {
+        void onResponse(ObjectResult<T> result);
+    }
 
 }

+ 8 - 0
WeiChat/src/main/res/drawable/selector_flip_btn.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/shape_flip_btn_press" android:state_checked="true"/>
+    <item android:drawable="@drawable/shape_flip_btn_press" android:state_pressed="true"/>
+    <item android:drawable="@drawable/shape_flip_btn_press" android:state_selected="true"/>
+
+    <item android:drawable="@drawable/shape_flip_btn_normal"/>
+</selector>

+ 8 - 0
WeiChat/src/main/res/drawable/shape_flip_btn_normal.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="10dp"/>
+
+    <solid android:color="#fffb9129"/>
+
+</shape>

+ 8 - 0
WeiChat/src/main/res/drawable/shape_flip_btn_press.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="10dp"/>
+
+    <solid android:color="#90da7d22"/>
+
+</shape>

+ 45 - 9
WeiChat/src/main/res/layout/activity_webview.xml

@@ -3,7 +3,8 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/lightgrey"
-    android:orientation="vertical" >
+    android:orientation="vertical">
+
     <ProgressBar
         android:id="@+id/pb"
         style="?android:attr/progressBarStyleHorizontal"
@@ -14,13 +15,48 @@
         android:indeterminateDuration="500"
         android:indeterminateOnly="false"
         android:max="100"
-        android:visibility="gone"
-        android:progressDrawable="@drawable/webview_progress_bar" >
-    </ProgressBar>
-    <com.handmark.pulltorefresh.library.PullToRefreshWebView
-        android:id="@+id/webView_listview"
+        android:progressDrawable="@drawable/webview_progress_bar"
+        android:visibility="gone"></ProgressBar>
+
+    <RelativeLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layerType="software"
-        android:background="@color/linen" />
+        android:layout_height="match_parent">
+
+        <com.handmark.pulltorefresh.library.PullToRefreshWebView
+            android:id="@+id/webView_listview"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/linen"
+            android:layerType="software" />
+
+        <TextView
+            android:id="@+id/web_previous_tv"
+            android:layout_width="100dp"
+            android:layout_height="36dp"
+            android:layout_alignParentBottom="true"
+            android:layout_marginBottom="25dp"
+            android:layout_marginLeft="30dp"
+            android:background="@drawable/selector_flip_btn"
+            android:gravity="center"
+            android:text="<上一条"
+            android:textColor="@color/white"
+            android:textSize="16sp"
+            android:visibility="gone"/>
+
+        <TextView
+            android:id="@+id/web_next_tv"
+            android:layout_width="100dp"
+            android:layout_height="36dp"
+            android:layout_alignParentBottom="true"
+            android:layout_alignParentRight="true"
+            android:layout_marginBottom="25dp"
+            android:layout_marginRight="30dp"
+            android:background="@drawable/selector_flip_btn"
+            android:gravity="center"
+            android:text="下一条>"
+            android:textColor="@color/white"
+            android:textSize="16sp"
+            android:visibility="gone"/>
+    </RelativeLayout>
+
 </LinearLayout>