com.huison.DriverAssistant_Web.util.LoginHelper.java Source code

Java tutorial

Introduction

Here is the source code for com.huison.DriverAssistant_Web.util.LoginHelper.java

Source

/**
 * 2014-6-10 12:10:48
 */
package com.huison.DriverAssistant_Web.util;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.Header;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Environment;
import android.os.Message;
import android.util.Log;

import com.huison.DriverAssistant_Web.Env;
import com.huison.DriverAssistant_Web.R;
import com.huison.DriverAssistant_Web.activity.ConfigActivity;
import com.huison.DriverAssistant_Web.activity.HomeActivity;
import com.huison.DriverAssistant_Web.activity.LoginActivity;
import com.huison.DriverAssistant_Web.activity.base.BaseActivity;
import com.huison.DriverAssistant_Web.util.UmengEventSender.UmengEventTypes;
import com.huison.tools.Util;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.BaseBinaryResponse;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;

public class LoginHelper {
    private static final String LOGIN_ACTION = "login";
    private static final String REGISTER_ACTION = "register";
    private static final String CHANGE_PASSWORD_ACTION = "changepass";
    private static final String FORGET_PASSWORD_ACTION = "forget";
    static Activity ctx;

    // 
    public static void visitorLogin(final BaseActivity activity) {
        login(activity, "", "", false);
    }

    private static void sendMsg(Activity activity, int flag) {
        Message msg = new Message();
        msg.what = flag;
        msg.obj = activity;
        HomeActivity.handler.sendMessage(msg);
    }

    final static String TAG = "#org.june.android#";

    public static void login(final BaseActivity activity, final String username, final String password,
            final boolean autoLogin) {
        Log.i(TAG, "call login func:" + username + "/" + password);
        ctx = activity;
        UmengEventSender.sendEvent(activity, UmengEventTypes.login);
        final ProgressDialog pd = new ProgressDialog(activity);
        pd.setMessage(activity.getString(R.string.logging_wait));
        pd.show();
        AsyncHttpClient client = activity.getAsyncHttpClient();
        RequestParams params = new RequestParams();
        try {
            JSONObject p = new JSONObject();
            p.put("mobile", username);
            p.put("password", password);
            p.put("method", "login");
            p.put("version", activity.getVersionName());
            p.put("devicetype", "android");
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date curDate = new Date(System.currentTimeMillis());
            String time = formatter.format(curDate);
            p.put("time", time);
            Log.i(TAG, "request parameters: " + p.toString());
            String data = Util.DesJiaMi(p.toString(), "czxms520");
            Log.i(TAG, "post data:" + data);
            params.put("data", data);
        } catch (Exception e) {
            activity.showMessageBox(activity.getString(R.string.wrong_profile));
            Log.e(TAG, e.getMessage());
            e.printStackTrace();
            return;
        }
        // params.put("xml", BaseActivity.getXML(map));
        Log.i(TAG, "AsyncHttpClient post:" + BaseActivity.REQUESTURL);
        client.post(BaseActivity.REQUESTURL, params, new JsonHttpResponseHandler() {
            @Override
            public void onDispatchSuccess(int statusCode, Header[] headers, String result) {
                Log.i(TAG, "onDispatchSuccess: " + result);
                pd.dismiss();
                try {
                    Log.i(TAG, "decrypting...");
                    result = Util.decrypt(result, "czxms520");
                    Log.v(TAG, "result decrypted :" + result);
                    JSONObject jo = new JSONObject(result);
                    String code = jo.getString("code");
                    String msg = getJSONValueAsString(jo, "message");
                    if (code.equals("0")) {
                        jo = new JSONObject(jo.getString("data"));
                        // 
                        String loginTime = getJSONValueAsString(jo, "LastLogin");
                        // 
                        String lastLoginTime = getJSONValueAsString(jo, "LastLogin");
                        // SESSIONKEY
                        /*
                         * String sessionKey = getJSONValueAsString( jo,
                         * "sessionkey");
                         */
                        // 
                        String urlHead = getJSONValueAsString(jo, "PhotoUrl");
                        String photoUrl = getJSONValueAsString(jo, "PhotoUrl");
                        String phone = getJSONValueAsString(jo, "Mobile");
                        Boolean vip = false;
                        if (String.valueOf(jo.getInt("Vip")).equals("1")) {
                            vip = true;
                        } else {
                            vip = false;
                        }
                        Env.isLogined = BaseActivity.isLogined = true;
                        Log.v(TAG, ":1");
                        activity.markLogin(phone, phone, password, autoLogin, "", loginTime, lastLoginTime, vip);
                        if (!photoUrl.equals("")) {
                            String finalHeadUrl = URLDecoder.decode(photoUrl, "utf-8");
                            BaseActivity.setUserHeadUrl(finalHeadUrl);
                            BaseActivity.setUserHeadDrawable(null);
                        } else {
                            BaseActivity.setUserHeadUrl("");
                            BaseActivity.setUserHeadDrawable(null);
                        }
                        // sendMsg(ConfigActivity.thiz,0);
                        //  start
                        HomeActivity.now_mobile = phone;
                        //  end
                        // 
                        // 
                        Log.v("", "kk" + phone);
                        LoginActivity.instance.finish();
                        Util.saveFile(phone, Environment.getExternalStorageDirectory() + "/xmsphone.txt");
                        SharedPreferences.Editor sharedata = activity.getSharedPreferences("MyData", 0).edit();
                        sharedata.putString("isJZMM_czxms", "true");
                        sharedata.commit();
                        Log.i(TAG, ":2");
                        sendMsg(0);
                        sendMsg(ConfigActivity.thiz, 2);
                        activity.finish();
                    } else {
                        Log.e(TAG, "server notify failed: error:" + msg);
                        LoginActivity.pw.setText("");
                        activity.showMessageBox(msg);
                    }
                } catch (JSONException e) {
                    Log.e(TAG, "login error" + Log.getStackTraceString(e));
                    e.printStackTrace();
                    activity.showMessageBox(activity.getText(R.string.server404));
                } catch (Exception e) {
                    Log.e(TAG, Log.getStackTraceString(e));
                    //e.printStackTrace();
                    activity.showMessageBox(",.");
                }
            }

            @Override
            public void onFailureAnyway(int statusCode, Header[] headers, Throwable throwable,
                    BaseBinaryResponse jsonResponse) {
                Log.i(TAG, "onFailureAnyway: " + statusCode);
                pd.dismiss();
                activity.showMessageBox(activity.getText(R.string.server404));
            }

            @Override
            public void onSuccessAnyway(int statusCode, Header[] headers, BaseBinaryResponse jsonResponse) {
                Log.i(TAG, "onSuccessAnyway: " + statusCode);
            }
        });
        TimeCounter.countTime(activity, pd);
    }

    private static void sendMsg(int flag) {
        if (HomeActivity.handler == null)
            return;
        Message msg = new Message();
        msg.what = flag;
        HomeActivity.handler.sendMessage(msg);
    }

    private static String getChannel(Context context) {
        ApplicationInfo appInfo;
        String value = null;
        try {
            appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(),
                    PackageManager.GET_META_DATA);
            value = appInfo.metaData.getString("UMENG_CHANNEL");
        } catch (NameNotFoundException e) {
        }
        return value;
    }

    public static void register(final BaseActivity activity, final String username, final String phone,
            final String password, final String tjrphone, final String yzm) {
        UmengEventSender.sendEvent(activity, UmengEventTypes.register);
        final ProgressDialog pd = new ProgressDialog(activity);
        pd.setMessage("...");
        pd.setCanceledOnTouchOutside(false);
        pd.setCancelable(false);
        pd.show();
        /*
         * Map<String, String> map = new HashMap<String, String>();
         * map.put("sessionkey", BaseActivity.getSESSIONKEY());
         * map.put("userid", username); map.put("mob", phone);
         * map.put("passwork", password); map.put("version",
         * activity.getVersionName()); map.put("imei",
         * DeviceUniqueIdentifier.getIMEIorMEID(activity)); map.put("imsi",
         * DeviceUniqueIdentifier.getIMSI(activity)); map.put("mac",
         * DeviceUniqueIdentifier.getMacAddress(activity)); map.put("channel",
         * getChannel(activity)); map.put("referee", tjrphone); map.put("Lng", ;
         * map.put("Lat", HomeActivity.gps_jdHomeActivity.gps_wd));
         * map.put("Code", yzm);
         */
        AsyncHttpClient client = activity.getAsyncHttpClient();
        RequestParams params = new RequestParams();
        /*
         * params.put("action", REGISTER_ACTION); params.put("xml",
         * BaseActivity.getXML(map));
         */
        try {
            JSONObject p = new JSONObject();
            p.put("mobile", phone);
            p.put("password", password);
            p.put("method", "register");
            p.put("version", activity.getVersionName());
            p.put("devicetype", "android");
            p.put("channel", getChannel(activity));
            p.put("imei", DeviceUniqueIdentifier.getIMEIorMEID(activity));
            p.put("imsi", "android" + DeviceUniqueIdentifier.getIMSI(activity));
            p.put("lat", Env.latitude);
            p.put("lng", Env.longitude);
            p.put("mac", DeviceUniqueIdentifier.getMacAddress(activity));
            p.put("referee", tjrphone);
            p.put("username", username);
            p.put("code", yzm);
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date curDate = new Date(System.currentTimeMillis());// 
            String time = formatter.format(curDate);
            p.put("time", time);
            Log.v("JSON", p.toString());
            String data = Util.DesJiaMi(p.toString(), "czxms520");
            params.put("data", data);
        } catch (Exception e) {
            e.printStackTrace();
        }
        client.post(BaseActivity.REQUESTURL, params, new JsonHttpResponseHandler() {
            @Override
            public void onDispatchSuccess(int statusCode, Header[] headers, String result) {
                Log.v("", "1");
                pd.dismiss();
                try {
                    result = Util.decrypt(result, "czxms520");
                    Log.v("JSON", result);
                    JSONObject jo = new JSONObject(result);
                    String code = jo.getString("code");
                    /*
                     * boolean registerFlag = getJSONValueAsString(jo, "code")
                     * .equals("0");
                     */
                    String msg = getJSONValueAsString(jo, "message");
                    if (code.equals("0")) {
                        String data = jo.getString("data");
                        jo = new JSONObject(data);
                        /*
                         * registerFlag = getJSONValueAsString(jo, "logincode")
                         * .equals("0");
                         */
                        // msg = getJSONValueAsString(jo, "loginmessage");
                        /*
                         * String passwordMD5 = getJSONValueAsString( jo,
                         * "pass");
                         */
                        /*
                         * //  String breakRuleRemind =
                         * getJSONValueAsString( jo, "wzxx"); //  String
                         * changeLicenseRemind = getJSONValueAsString( jo,
                         * "hzxx"); //  String examineRemind =
                         * getJSONValueAsString(jo, "nsxx");
                         */
                        // vip
                        /*
                         * boolean isVip = getJSONValueAsString(jo, "Vip")
                         * .equals("true"); //  String
                         * blackPointUpdateTime = getJSONValueAsString( jo,
                         * "wzhdtime"); //  String toolUpdateTime =
                         * getJSONValueAsString( jo, "sygjtime"); // 
                         * String favorUpdateTime = getJSONValueAsString( jo,
                         * "yhtime");
                         */
                        /*
                         * boolean isVip = getJSONValueAsString(jo, "Vip")
                         * .equals("true");
                         */
                        // 
                        String loginTime = getJSONValueAsString(jo, "LastLogin");
                        // 
                        String lastLoginTime = getJSONValueAsString(jo, "LastLogin");
                        // SESSIONKEY
                        /*
                         * String sessionKey = getJSONValueAsString( jo,
                         * "sessionkey");
                         */
                        String urlHead = getJSONValueAsString(jo, "PhotoUrl");
                        String photoUrl = getJSONValueAsString(jo, "PhotoUrl");
                        String phone = getJSONValueAsString(jo, "Mobile");
                        Boolean vip = false;
                        if (String.valueOf(jo.getInt("Vip")).equals("1")) {
                            vip = true;
                        } else {
                            vip = false;
                        }
                        Log.v("VIP", String.valueOf(vip));
                        activity.markLogin(phone, phone, password, true, "", loginTime, lastLoginTime, vip);
                        if (!photoUrl.equals("")) {
                            // 
                            String finalHeadUrl = URLDecoder.decode(photoUrl, "utf-8");
                            BaseActivity.setUserHeadUrl(finalHeadUrl);
                            BaseActivity.setUserHeadDrawable(null);
                        } else {
                            BaseActivity.setUserHeadUrl("");
                            BaseActivity.setUserHeadDrawable(null);
                        }
                        try {
                            pd.dismiss();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        sendMsg(ConfigActivity.thiz, 0);
                        activity.finish();
                    } else {
                        activity.showMessageBox(msg);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    // activity.markLogout();
                    // sendMsg(activity,1);
                    activity.showMessageBox(activity.getText(R.string.server404));
                    Log.e("register error", Log.getStackTraceString(e));
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                    activity.showMessageBox("");
                }
            }

            @Override
            public void onFailureAnyway(int statusCode, Header[] headers, Throwable throwable,
                    BaseBinaryResponse jsonResponse) {
                Log.v("C", "1");
                pd.dismiss();
                activity.showMessageBox(activity.getText(R.string.server404));
            }

            @Override
            public void onSuccessAnyway(int statusCode, Header[] headers, BaseBinaryResponse jsonResponse) {
                pd.dismiss();
                Log.v("A", "1");
            }
        });
        Log.v("B", "1");
        TimeCounter.countTime(activity, pd);
    }

    public static void changePassword(final BaseActivity activity, final String username, final String phone,
            final String oldPassword, final String newPassword) {
        UmengEventSender.sendEvent(activity, UmengEventTypes.changePW);
        final ProgressDialog pd = new ProgressDialog(activity);
        pd.setMessage("");
        pd.show();
        AsyncHttpClient client = activity.getAsyncHttpClient();
        RequestParams params = new RequestParams();
        /*
         * Map<String, String> map = new HashMap<String, String>();
         * map.put("sessionkey", BaseActivity.getSESSIONKEY());
         * map.put("userid", username); map.put("mob", phone);
         * map.put("oldpasswork", oldPassword); map.put("passwork",
         * newPassword); map.put("version", activity.getVersionName());
         * params.put("action", CHANGE_PASSWORD_ACTION); params.put("xml",
         * BaseActivity.getXML(map));
         */
        try {
            JSONObject p = new JSONObject();
            p.put("mobile", phone);
            p.put("password", oldPassword);
            p.put("method", "editpassword");
            p.put("version", activity.getVersionName());
            p.put("devicetype", "android");
            p.put("newpassword", newPassword);
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date curDate = new Date(System.currentTimeMillis());// 
            String time = formatter.format(curDate);
            p.put("time", time);
            Log.v("", p.toString());
            String data = Util.DesJiaMi(p.toString(), "czxms520");
            // Log.v("",data);
            params.put("data", data);
        } catch (Exception e) {
            e.printStackTrace();
        }
        client.post(BaseActivity.REQUESTURL, params, new JsonHttpResponseHandler() {
            @Override
            public void onDispatchSuccess(int statusCode, Header[] headers, String result) {
                try {
                    result = Util.decrypt(result, "czxms520");
                    Log.v(TAG, "JSON" + result);
                    JSONObject jo = new JSONObject(result);
                    String code = jo.getString("code");
                    String msg = getJSONValueAsString(jo, "message");
                    if (code.equals("0")) {
                        // jo = jo.getJSONObject("data");
                        activity.showMessageBoxAndFinish(msg);
                        activity.setPassword(newPassword);
                    } else {
                        activity.showMessageBox(msg);
                    }
                } catch (JSONException e) {
                    activity.showMessageBox(activity.getText(R.string.server404));
                    Log.e("change password error", Log.getStackTraceString(e));
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailureAnyway(int statusCode, Header[] headers, Throwable throwable,
                    BaseBinaryResponse jsonResponse) {
                pd.dismiss();
                activity.showMessageBox(activity.getText(R.string.server404));
            }

            @Override
            public void onSuccessAnyway(int statusCode, Header[] headers, BaseBinaryResponse jsonResponse) {
                pd.dismiss();
                // ChangePasswordActivity.instance.finish();
            }
        });
        TimeCounter.countTime(activity, pd);
    }

    public static void forgetPassword(final BaseActivity activity, final String username) {
        UmengEventSender.sendEvent(activity, UmengEventTypes.forgetPW);
        final ProgressDialog pd = new ProgressDialog(activity);
        pd.setMessage("");
        pd.show();
        AsyncHttpClient client = activity.getAsyncHttpClient();
        RequestParams params = new RequestParams();
        /*
         * Map<String, String> map = new HashMap<String, String>();
         * map.put("sessionkey", BaseActivity.getSESSIONKEY());
         * map.put("userid", username); map.put("mob", phone);
         * map.put("version", activity.getVersionName()); params.put("action",
         * FORGET_PASSWORD_ACTION); params.put("xml", BaseActivity.getXML(map));
         * Log.v("XML:",BaseActivity.getXML(map));
         */
        try {
            JSONObject p = new JSONObject();
            p.put("mobile", username);
            p.put("password", "wangjile");
            p.put("method", "forget");
            p.put("version", activity.getVersionName());
            p.put("devicetype", "android");
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date curDate = new Date(System.currentTimeMillis());// 
            String time = formatter.format(curDate);
            p.put("time", time);
            Log.v("", p.toString());
            String data = Util.DesJiaMi(p.toString(), "czxms520");
            // Log.v("",data);
            params.put("data", data);
        } catch (Exception e) {
            e.printStackTrace();
        }
        client.post(BaseActivity.REQUESTURL, params, new JsonHttpResponseHandler() {
            @Override
            public void onDispatchSuccess(int statusCode, Header[] headers, String result) {
                pd.dismiss();
                try {
                    result = Util.decrypt(result, "czxms520");
                    Log.v(TAG, "JSON" + result);
                    JSONObject jo = new JSONObject(result);
                    String code = jo.getString("code");
                    String msg = getJSONValueAsString(jo, "message");
                    if (code.equals("0")) {
                        activity.showMessageBoxAndFinish(msg);
                    } else {
                        activity.showMessageBox(msg);
                    }
                } catch (JSONException e) {
                    activity.showMessageBox(activity.getText(R.string.server404));
                    Log.e("change password error", Log.getStackTraceString(e));
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailureAnyway(int statusCode, Header[] headers, Throwable throwable,
                    BaseBinaryResponse jsonResponse) {
                pd.dismiss();
                activity.showMessageBox(activity.getText(R.string.server404));
            }

            @Override
            public void onSuccessAnyway(int statusCode, Header[] headers, BaseBinaryResponse jsonResponse) {
            }
        });
        TimeCounter.countTime(activity, pd);
    }

    /**
     * JSONString
     * 
     * @param jsonObject
     * @param key
     * @return
     * @throws JSONException
     */
    private static final String getJSONValueAsString(JSONObject jsonObject, String key) throws JSONException {
        try {
            return String.valueOf(jsonObject.get(key));
        } catch (JSONException e) {
            Log.e("getJSONValueAsString", Log.getStackTraceString(e));
            return "";
        }
    }
}