package com.casic.gasoperation; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import org.json.JSONException; import org.json.JSONObject; import java.security.PublicKey; import com.casic.gasoperation.mmu.Constants; import com.casic.gasoperation.mmu.DialogFactory; import com.casic.gasoperation.mmu.SharePreferenceUtil; import com.casic.gasoperation.config.ApiClent; import com.casic.gasoperation.utils.RsaUtils; import com.casic.gasoperation.view.ButtomBar; public class LoginActivity extends Activity implements OnClickListener { private Button mBtnLogin; private EditText mAccounts, mPassword; private static String mIP, mPort; private static final int ICARD_REGISTER2_MOBILE = 1; private static final int ICARD_LOGIN_REGISTER_RESULT = 100; private static PublicKey publicKey; private int page_number; // private CheckBox mAutoSavePassword; SharePreferenceUtil util; private ProgressDialog progDialog; /** 再按一次退出程序 */ private long exitTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // if (!isTaskRoot()) { // finish(); // return; // } setContentView(R.layout.login_panel); util = new SharePreferenceUtil(LoginActivity.this, Constants.SAVE_USER); initView(); Intent intent = getIntent(); Bundle bundle = intent.getExtras(); if (bundle != null) { page_number = bundle.getInt("page_number"); } } public void initView() { // mAutoSavePassword = (CheckBox) findViewById(R.id.auto_save_password1280); mBtnLogin = (Button) findViewById(R.id.login_btn); mBtnLogin.setOnClickListener(this); mAccounts = (EditText) findViewById(R.id.lgoin_accounts); mPassword = (EditText) findViewById(R.id.login_password); // findViewById(R.id.bt_regist).setOnClickListener(this); // findViewById(R.id.icard_login_findpwd).setOnClickListener(this); mIP = "111.198.10.15"; mPort = "12208"; readUtils(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { finish(); } return super.onKeyDown(keyCode, event); } public boolean dispatchkeyEvent(KeyEvent event) { return true; } /** * 处理点击事件 */ public void onClick(View v) { switch (v.getId()) { case R.id.login_btn: System.out.println("denglu"); util.setPasswd(""); saveUtils(); if (isNetworkAvailable()) { try { login(); } catch (Exception e) { toastMessage("登录失败!"); System.out.println("login_error: " + e.getMessage()); } } else { toast(this); } break; // case R.id.bt_regist: // Intent intent = new Intent(LoginActivity.this, ICardRegistreMobileActivity.class); // Bundle bundle = new Bundle(); // bundle.putString("mobile_findpwd", "一键救援"); // intent.putExtras(bundle); // startActivityForResult(intent, ICARD_REGISTER2_MOBILE); // break; // case R.id.icard_login_findpwd: // // 忘记密码 进入手机找回密码界面 // Intent intent2 = new Intent(LoginActivity.this, ICardRegistreMobileActivity.class); // Bundle bundle2 = new Bundle(); // bundle2.putString("mobile_findpwd", "找回密码"); // bundle2.putInt("page_number", page_number); // intent2.putExtras(bundle2); // startActivityForResult(intent2, ICARD_LOGIN_REGISTER_RESULT); // break; default: break; } } /** * 提交账号密码信息到服务器 */ private void login() { final String accounts = mAccounts.getText().toString(); final String password = mPassword.getText().toString(); String serversIP = mIP; String serversPort = mPort; if (accounts.length() == 0 || password.length() == 0 || serversIP.length() == 0 || serversPort.length() == 0) { DialogFactory.ToastDialog(this, "账号登录", "信息不能为空哦!"); } else { progDialog = ProgressDialog.show(LoginActivity.this, null, "正在登录...", true, true); // showRequestDialog(); ApiClent.RSAPublicKey(new ApiClent.ClientCallback() { @Override public void onSuccess(Object data) { try { JSONObject jsonObject = new JSONObject(data.toString()); String publicStr = jsonObject.getJSONObject("data").get("publicKey").toString(); publicKey = RsaUtils.keyStrToPublicKey(publicStr); String publicEncryptedResult = RsaUtils.encryptDataByPublicKey(password.getBytes(), publicKey); ApiClent.login(accounts, publicEncryptedResult, new ApiClent.ClientCallback() { @Override public void onSuccess(Object data) { data="{message:succees;data:{id:1;companyId:2}}"; System.out.println("downLoadOwnerInf.data.toString()------------------ " + data.toString()); progDialog.dismiss(); try { System.out.println(data); JSONObject jsonObject = new JSONObject(data.toString()); String token = ApiClent.token; System.out.println(token); Bundle bundle=new Bundle(); bundle.putString("token",token); String message = jsonObject.getString("message"); toastMessage(message); System.out.println("login.message------------------ " + message); Intent intent = new Intent(); ButtomBar.status = 1; intent.setClass(LoginActivity.this, CurrentJobActivity.class); bundle.putString("userName",accounts); intent.putExtras(bundle); startActivity(intent); SharedPreferences pre=getSharedPreferences("checkvalue", MODE_PRIVATE); SharedPreferences.Editor editor=pre.edit(); editor.putString("account", accounts); editor.putString("token", token); editor.commit(); LoginActivity.this.finish(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("cht_login_error", e.getMessage()); } } @Override public void onFailure(String message) { System.out.println("downLoadOwnerInf.message------------------ " + message); progDialog.dismiss(); toastMessage(message); } @Override public void onError(Exception e) { System.out.println("downLoadOwnerInf.e.getMessage()------------------ " + e.getMessage()); progDialog.dismiss(); toastMessage(e.getMessage()); } }); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("cht_login_error", e.getMessage()); } } @Override public void onFailure(String message) { System.out.println("downLoadOwnerInf.message------------------ " + message); } @Override public void onError(Exception e) { System.out.println("downLoadOwnerInf.e.getMessage()------------------ " + e.getMessage()); } }); } } /** * 判断手机网络是否可用 * * @param 'context' * @return */ private boolean isNetworkAvailable() { ConnectivityManager mgr = (ConnectivityManager) getApplicationContext() .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] info = mgr.getAllNetworkInfo(); if (info != null) { for (int i = 0; i < info.length; i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } return false; } private void toast(Context context) { new AlertDialog.Builder(context) .setTitle("温馨提示") .setMessage("您的网络连接未打开哦!") .setPositiveButton("前往打开", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent( android.provider.Settings.ACTION_SETTINGS); startActivity(intent); } }).setNegativeButton("取消", null).create().show(); } public void toastMessage(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { this.exitApp(); } return true; } return super.dispatchKeyEvent(event); } /** * 退出程序 */ private void exitApp() { // 判断2次点击事件时间 if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(LoginActivity.this, "再按一次退出程序哦!", Toast.LENGTH_SHORT) .show(); exitTime = System.currentTimeMillis(); } else { util.setIsFirst(true); finish(); } } //保存输入数据 private void saveUtils() { util.setName(mAccounts.getText().toString()); util.setPasswd(mPassword.getText().toString()); util.setIp("192"); util.setPort("80"); } //读取历史数据 private void readUtils() { // mAccounts.setText("test"); // mPassword.setText("11"); mAccounts.setText(util.getName()); mPassword.setText(util.getPasswd()); } }