Android 用户登录
1:服务端代码如下
<?php
/**
*登录成功就返回 1,否则返回 0
*/
$REQUEST_METHOD=$_SERVER['REQUEST_METHOD']; if($REQUEST_METHOD=='GET'){
$name=$_GET['name'];
$pwd=$_GET['pwd'];
if($name=='yanshiying' && $pwd=='yanshiying'){
echo 1;
}else{
echo 0;
}
}else if($REQUEST_METHOD=='POST'){
$name=$_POST['name'];
$pwd=$_POST['pwd'];
if($name=='yanshiying' && $pwd=='yanshiying'){
echo 1;
}else{
echo 0;
}
}
?>
2:Android Client端。

(1):activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"> <ProgressBar
android:id="@+id/pb_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
style="?android:attr/progressBarStyleLarge"
android:visibility="gone"/> <EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username"/> <EditText
android:id="@+id/et_pwd"
android:layout_below="@id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword"/> <CheckBox
android:id="@+id/cb_remember"
android:layout_below="@id/et_pwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Remember me"/> <Button
android:id="@+id/btn_login"
android:layout_below="@id/cb_remember"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Login"/>
</RelativeLayout>
(2):UIHelper.java
为了更方便使用Toast,所以在这里自定义了一个类,进行了简单的封装。
public class UIHelper {
private Context context=null;
public UIHelper(Context context){
this.context=context;
}
public void ShortToast(String text){
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
public void LongToast(String text){
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
}
(3):NetHelper.java
此类主要和服务端进行网络交互。
public class NetHelper {
public static String doLogin(String url) {
String result="";
HttpClient client=new DefaultHttpClient();
HttpGet get=new HttpGet(url);
try {
HttpResponse response=client.execute(get);
//服务端成功响应
if(response.getStatusLine().getStatusCode()==200){
//取得服务端返回的数据
result=EntityUtils.toString(response.getEntity());
}
} catch (Exception e) {
}
return result;
}
}
(4):MainActivity.java 用户登录。
public class MainActivity extends Activity
implements OnClickListener, OnCheckedChangeListener {
//用于保存用户名
public static String USER_NAME=""; private SharedPreferences sp=null;
private EditText etName=null;
private EditText etPwd=null;
private CheckBox cbRemember=null;
private Button btnLogin=null;
private ProgressBar pbLogin=null; private boolean remember=false;
private String name="";
private String pwd=""; private UIHelper uiHelper=null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //实例化UI
initUI(); //读取用户登录信息
readSharedPreferences(); cbRemember.setOnCheckedChangeListener(this);
btnLogin.setOnClickListener(this);
} @Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
if(cbRemember.isChecked()){
remember=true;
}else{
remember=false;
}
} @Override
public void onClick(View arg0) {
name=etName.getText().toString();
pwd=etPwd.getText().toString();
if(doValidateForm()){
pbLogin.setVisibility(View.VISIBLE);
//开启线程进行用户登录处理
new Thread(new LoginThread()).start();
}
} private void initUI(){
sp=this.getSharedPreferences("account", MODE_PRIVATE); etName=(EditText)findViewById(R.id.et_name);
etPwd=(EditText)findViewById(R.id.et_pwd);
cbRemember=(CheckBox)findViewById(R.id.cb_remember);
btnLogin=(Button)findViewById(R.id.btn_login);
pbLogin=(ProgressBar)findViewById(R.id.pb_login); uiHelper=new UIHelper(this);
} private void readSharedPreferences(){
String name=sp.getString("u_name", "");
String pwd=sp.getString("u_pwd", "");
etName.setText(name);
etPwd.setText(pwd);
if(!(name.equals("") &&pwd.equals(""))){
remember=true;
cbRemember.setChecked(true);
}
} private void saveSharedPreferences(){
SharedPreferences.Editor editor=sp.edit();
if(remember){//记住用户登录信息
editor.putString("u_name", name);
editor.putString("u_pwd", pwd);
editor.commit();
}else{
editor.clear();
editor.commit();
}
} //校验用户字段
private boolean doValidateForm(){
if(name.length()<1){
uiHelper.ShortToast("用户名不能为空!");
return false;
}else if(pwd.length()<1){
uiHelper.ShortToast("密码不能为空!");
return false;
}
return true;
} private Handler loginHandler=new Handler(){
public void handleMessage(Message msg){
pbLogin.setVisibility(View.GONE);
//将登录结果提示给用户
if(msg.what==100){
String info="";
String flag=(String)msg.obj;
if(flag.equals("1")){
//info="登录成功!";
USER_NAME=name;
Intent intent=new Intent(MainActivity.this,OtherActivity.class);
startActivity(intent);
finish();
return;
}else if(flag.equals("0")){
info="用户名或密码错误!";
}else{
info="登录失败请稍后重试!";
}
uiHelper.ShortToast(info);
}
}
};
class LoginThread implements Runnable{
public void run(){
String url="http://192.168.0.116/android/login.php?name="+name+"&pwd="+pwd;
String flag=NetHelper.doLogin(url);
if(flag.equals("1")){
//记住用户登录信息
saveSharedPreferences();
}
loginHandler.obtainMessage(100, flag).sendToTarget();
}
}
}
(5)OtherActivity.java 主要用于用户登录成功后信息的显示
public class OtherActivity extends Activity {
private TextView tvShow=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
tvShow=(TextView)findViewById(R.id.tv_show);
tvShow.setText(MainActivity.USER_NAME);
}
}
3:最后不要忘了在AndroidManifest.xml文件中添加:
<uses-permission android:name="android.permission.INTERNET" />
Android 用户登录的更多相关文章
- Android 用户登录界面
本篇博客主要给大家演示怎样一步一步地创建一个类似于下图展示的这么一个UI界面: 一.准备图片资源 记住:因为Demo其中用到的图片资源都是直接从上面图片截取的,所以图片质量上面会差一些,只是.不影响我 ...
- Android用户登录机制安全性的一些思考
1 client要做到安全存贮数据非常难,通过反编译和强攻.仅仅要有心,差点儿都能够破解. 2 服务端相对安全. 3 结合以上两点,推出能做的点是控制灾难规模.每次破解一个client仅仅能针对 ...
- android用户登录验证
转自https://www.cnblogs.com/android-blogs/p/5912585.html
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...
- android loginDemo +WebService用户登录验证
android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...
- Android 之 AlertDialog 用户登录
1:activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi ...
- Android中利用httpclient进行网络通信的方法(以用户登录为例说明)
http://www.android100.org/html/201406/09/22915.html 1.服务器端 服务器端和android没有太大关系,对J2EE比较熟悉的话写起来应该很容易,这里 ...
- Google用户登录界面 Android实现
实验效果: 项目目录: Java代码(放在Src文件下) package com.bn.chap9.login; import java.io.BufferedReader; import java. ...
- Android studio 开发一个用户登录界面
Android studio 开发一个用户登录界面 activity_main.xml <?xml version="1.0" encoding="utf-8&qu ...
随机推荐
- C++类型转换[转]
转自 http://www.cnblogs.com/goodhacker/archive/2011/07/20/2111996.html C风格的强制类型转换(Type Cast)很简单,不管什么类型 ...
- 金洪林:红邦创衣止于至善_品牌-生活时尚_品牌_YOKA时尚网
金洪林:红邦创衣止于至善_品牌-生活时尚_品牌_YOKA时尚网 金洪林:红邦创衣止于至善
- B - The Accomodation of Students - hdu 2444(最大匹配)
题意:现在有一些学生给你一下朋友关系(不遵守朋友的朋友也是朋友),先确认能不能把这些人分成两组(组内的人要相互不认识),不能分的话输出No(小写的‘o’ - -,写成了大写的WA一次),能分的话,在求 ...
- cocos2dx lua binding ,cocos2dx 绑定lua测试
前面2篇分别简单介绍 手动bind C++ 类和lua:http://blog.csdn.net/chenee543216/article/details/12074771 使用tolua++简化工作 ...
- Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
转自:http://www.cnblogs.com/saptechnique/archive/2013/02/17/2914222.html 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对 ...
- SOFTWARE_INTRODUCE_02
几款网页数据抓取软件 近年来,随着国内大数据战略越来越清晰,数据抓取和信息采集系列产品迎来了巨大的发展机遇,采集产品数量也出现迅猛增长.然而与产品种类快速增长相反的是,信息采集技术相对薄弱.市场竞争激 ...
- [RxJS] Combining streams in RxJS
Source: Link We will looking some opreators for combining stream in RxJS: merge combineLatest withLa ...
- Android学习四、Android中的Adapter
一.Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for t ...
- Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
遇着这个提示的话,如果本地只安装了一个mysql,这里写的很详细的 http://www.blogjava.net/asenyifei/articles/82575.html 看这里可以解决,如果本地 ...
- MyEclipse保存文件时 自动格式化代码! 不包括文档注释
设置不格式化 文档注释