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 ...
随机推荐
- JUC-线程池
一,问题 在没有使用线程池的时候,每次需要一个线程都得手动new Thread()方式创建线程,用完了再销毁. 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发 ...
- RHEL7 MariaDB测试
MariaDB安装及启动: yum groupinstall mariadb 启动mariadb systemctl restart mariadb systemctl enable mariadb ...
- ELK + kafka 日志方案
概述 本文介绍使用ELK(elasticsearch.logstash.kibana) + kafka来搭建一个日志系统.主要演示使用spring aop进行日志收集,然后通过kafka将日志发送给l ...
- CentOS下nodejs最简单的安装方法
1. 下载编译好的文件 我的系统是centos7,进入要存放下载资源的目录,个人建议存放在/usr/local/src/目录下.然后执行安装命令: wget http://nodejs.org/dis ...
- ios中通过过RGB绘制图片
+ (UIImage *) ImageWithColor: (UIColor *) color frame:(CGRect)aFrame { aFrame = CGRectMake(, , aFram ...
- ID3D11DeviceContext::DrawIndexed DrawIndexed 参数详解 StartIndexLocation BaseVertexLocation
先来看一下画的结果: m_pImmediateContext->DrawIndexed(36, 0, 0); 这个是画一个立方体 后两个参数都是0没有什么可说的. m_pImmediateCon ...
- C语言学习笔记 (001) - 常量指针与指针常量的区别(转帖)
三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开. 一) 常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量 ...
- sql中union 和 union all的区别
最近发现一个视图出奇的慢,在生产环境还好,由于服务器配置较高,没有察觉出来.但是做了一次修改后在开发版 和测试版就直接查询不出结果了.就连select count(1) from 都运行2个小时没有结 ...
- 基于Amoba实现mysql主从读写分离
一.Amoeba简介 Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特 ...
- OpenCV 学习笔记 01 安装OpenCV及相关依赖库
本次学习是基于Window10进行的.语言为python3. 1 与opencv相关的库简介 1.1 numpy numpy 是 OpenCV 绑定 python 时所依赖的库,此意味着numpy在安 ...