Newer
Older
GasOperationApp / app / src / main / java / com / casic / gasoperation / LoginActivity.java
[wangxitong] on 24 May 2021 9 KB first commit
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());
	}
}