Java tutorial
/** * 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 ""; } } }