android笔记---LoginActivity extends FinalActivity
package com.fuda.activity; import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import org.apache.http.HttpEntity;
import org.apache.http.client.CookieStore;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.jarjar.apache.commons.codec.digest.DigestUtils;
import org.json.JSONObject; import net.tsz.afinal.FinalActivity;
import net.tsz.afinal.FinalHttp;
import net.tsz.afinal.annotation.view.ViewInject;
import net.tsz.afinal.http.AjaxCallBack;
import net.tsz.afinal.http.AjaxParams;
import android.app.Activity;
import android.app.Dialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.text.Editable;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast; import com.fuda.AppContext;
import com.fuda.R;
import com.fuda.Unity;
import com.fuda.model.StudentInfoModel;
import com.fuda.ui.MessageBar;
import com.fuda.ui.MessageBar.OnMessageClickListener;
import com.fuda.ui.MyCommonUtils;
import com.fuda.ui.MyDialog;
import com.fuda.ui.SearchTextView;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.student.utils.DateDeserializer; public class LoginActivity extends FinalActivity { @ViewInject(id = R.id.account)
private SearchTextView accountV;
@ViewInject(id = R.id.password)
private SearchTextView passwordV;
@ViewInject(id = R.id.login_btn)
private Button login_btn;
private CookieStore cookieStore;
private MyAsyncTask myAsyncTask;
private Dialog dialog;
private SharedPreferences p;
private MessageBar mMessageBar; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_login); initView();
} OnMessageClickListener messageListener = new OnMessageClickListener() {
@Override
public void onMessageClick(Parcelable token) {
// TODO Auto-generated method stub
}
}; public void showMessage(String message) {
mMessageBar.show(message, "关闭", R.drawable.ic_messagebar_undo, new Bundle());
} private void initView() {
mMessageBar = new MessageBar(this);
mMessageBar.setOnClickListener(messageListener);
login_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String account = accountV.getText().toString();
String password = passwordV.getText().toString();
if (account.equals("")) {
showMessage(getResources().getString(R.string.gd_login_username_empty_label));
return;
} else if (password.equals("")) {
showMessage(getResources().getString(R.string.gd_login_password_empty_label));
return;
}
//安全性判断
if (myAsyncTask != null && myAsyncTask.getStatus() != AsyncTask.Status.FINISHED)
myAsyncTask.cancel(true);
myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();
}
});
} class MyAsyncTask extends AsyncTask<Object, Void, Object> {
@Override
protected void onPreExecute() {
Message msg = new Message();
msg.what = 2;
uiHandler.sendMessage(msg);
super.onPreExecute();
} @Override
protected Object doInBackground(Object... arg0) {
Object obj = null;
if (!isCancelled()) {
FinalHttp finalHttp = new FinalHttp(getBaseContext());
AjaxParams ap = new AjaxParams();
StringBuffer buffer = new StringBuffer();
//把所需的参数集中起来
buffer.append("{\"LoginName\":\"" + accountV.getText().toString() + "\",\"Password\":\"" + new DigestUtils().sha512Hex(passwordV.getText().toString())
+ "\",\"UniversityCode\":\"10386\",\"LoginWay\":\"Number\"}");
ap.put("data", buffer.toString());
cookieStore = new BasicCookieStore();
finalHttp.configCookieStore(cookieStore);
obj = finalHttp.postSync(Unity.loginAPI, ap);
}
return obj;
} //doInBackground执行之后的结果obj就是onPostExecute的参数
@Override
protected void onPostExecute(Object result) {
Message msg = new Message();
msg.obj = result;
msg.what = 1;
uiHandler.sendMessage(msg);
super.onPostExecute(result);
} @Override
protected void onCancelled() {
super.onCancelled();
} private Handler uiHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
if (dialog != null) dialog.dismiss();
try {
//把字符串转成json
JSONObject jo = new JSONObject(msg.obj.toString());
//返回其中的Success字段
String flag = jo.get("Success").toString();
if ("true".equals(flag)) {
// p.edit().putString("account", accountV.getText().toString()).commit();
// p.edit().putString("password", passwordV.getText().toString()).commit(); //http://blog.csdn.net/xinhu_li0104/article/details/8700371
Gson gson = new GsonBuilder().create();
//讲json字符串,转化成StudentInfoModel类型的对象
StudentInfoModel studentInfoModel = gson.fromJson(jo.optString("ReturnObj").toString(), StudentInfoModel.class);
//保存cookie和用户信息
getContext().setCookieStore(cookieStore);
getContext().setStudentInfoModel(studentInfoModel);
Intent intent = new Intent(LoginActivity.this, HomeTabHostActivity.class);
intent.putExtra("studentInfoModel", studentInfoModel);
startActivity(intent);
} else {
showMessage(jo.optString("Msg"));
}
} catch (Exception e) {
showMessage(getResources().getString(R.string.forecast_error_check_hint));
e.printStackTrace();
}
break;
case 2:
dialog=new MyDialog(LoginActivity.this).showProgressDialog(null, myAsyncTask);
break;
default:
break;
}
super.handleMessage(msg);
}
};
} public AppContext getContext() {
return ((AppContext) super.getApplicationContext());
} @Override
protected void onDestroy() {
if (myAsyncTask != null && myAsyncTask.getStatus() != AsyncTask.Status.FINISHED)
myAsyncTask.cancel(true);
super.onDestroy();
} @Override
protected void onResume() {
super.onResume();
// String account = null;
// String password = null;
// p = getSharedPreferences("userinfo", MODE_WORLD_READABLE);
// account = p.getString("account", "");
// password = p.getString("password", "");
// if (account != "" && password != "") {
// accountV.setText(account);
// passwordV.setText(password);
// }
} @Override
protected void onStart() {
super.onStart();
} }
android笔记---LoginActivity extends FinalActivity的更多相关文章
- Android笔记——Android中数据的存储方式(二)
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...
- Android笔记:触摸事件的分析与总结----TouchEvent处理机制
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://glblong.blog.51cto.com/3058613/1559320 ...
- Android笔记--View绘制流程源码分析(二)
Android笔记--View绘制流程源码分析二 通过上一篇View绘制流程源码分析一可以知晓整个绘制流程之前,在activity启动过程中: Window的建立(activit.attach生成), ...
- Android笔记--自定义控件仿遥控器的圆形上下左右OK圆盘按钮
原文:Android笔记--自定义控件仿遥控器的圆形上下左右OK圆盘按钮 上面就是几张预览图!代码在最底下 主要就两个步骤,画图.监听点击 1.整个控件基本上是一步步画出来的,重写onDraw方法开始 ...
- Android笔记(四) Activity之间的数据传递
我们之前使用Intent进行Activity之间的跳转,其实Intent还可以在启动活动的时候传递数据. Intent提供了一系列的putExtra方法以便我们把想要传递的数据暂存在Intent中,待 ...
- Android 笔记之 R 文件
Android笔记之R文件 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: red; te ...
- Android 笔记之 Android 系统架构
Android笔记之Android系统架构 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: ...
- Android笔记之使用Glide加载网络图片、下载图片
Glide简介 不想说太多,真的很方便:P)可以节省我不少时间 GitHub地址:https://github.com/bumptech/glide 加载网络图片到ImageView Glide.wi ...
- Android笔记--View绘制流程源码分析(一)
Android笔记--View绘制流程源码分析 View绘制之前框架流程分析 View绘制的分析始终是离不开Activity及其内部的Window的.在Activity的源码启动流程中,一并包含 着A ...
随机推荐
- quartz持久化部署实现
http://blog.csdn.net/wxniitxueyuan/article/details/50477712
- C#正则验证字符串是否全是数字
Regex r = new Regex(@"^\d+$"); if (r.Match(vlannumber).Success) { sql += " and a.vlan ...
- (原)torch模型转pytorch模型
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7839263.html 目前使用的torch模型转pytorch模型的程序为: https://gith ...
- 修改的select
慢慢修改: #include <winsock.h> #include <stdio.h> #include <string> #define PORT 5010 ...
- Ubuntu中root用户和user用户的相互切换[转载自93度的饼干]
Ubuntu中root用户和user用户的相互切换 Ubuntu是最近很流行的一款Linux系统,因为Ubuntu默认是不启动root用户,现在介绍如何进入root的方法. (1)从user用户切换到 ...
- JSON-handle-好玩的google插件
一:前言 现在的主要工作是写后台的接口服务,而JSON这种数据格式的数据是最为常用的,经常使用在线的格式化工具,来检查或者编写对应的数据,感觉不够智能,于是试验了一下几个插件,感觉有些挺好用的,在此记 ...
- Linux内核同步:RCU
linux内核 RCU机制详解 简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用.RCU主要针对的数据对象是链表,目的是提高遍历读取数据的 ...
- 使用Kotlin开发Android应用
1.Kotlin介绍 [Kotlin](https://kotlinlang.org/) Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者.Java是 ...
- sql server2008系统表详细说明sys.开头的表
一.库里有多少个表,表名等 select * from INFORMATION_SCHEMA.TABLES 二.查询表.字段.类型.是否主键.长度.小数位.是否允许空.默认值等详细查询 效果: SEL ...
- mindoc 在线文档接口系统的 docker 制作过程
说明: mindoc 是一款在线接口文档编辑系统,百度一下就知道了.github地址:https://github.com/lifei6671/mindoc 本机:ubuntu16.04 + dock ...