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 用户登录的更多相关文章

  1. Android 用户登录界面

    本篇博客主要给大家演示怎样一步一步地创建一个类似于下图展示的这么一个UI界面: 一.准备图片资源 记住:因为Demo其中用到的图片资源都是直接从上面图片截取的,所以图片质量上面会差一些,只是.不影响我 ...

  2. Android用户登录机制安全性的一些思考

    1  client要做到安全存贮数据非常难,通过反编译和强攻.仅仅要有心,差点儿都能够破解. 2  服务端相对安全. 3  结合以上两点,推出能做的点是控制灾难规模.每次破解一个client仅仅能针对 ...

  3. android用户登录验证

    转自https://www.cnblogs.com/android-blogs/p/5912585.html

  4. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

  5. android loginDemo +WebService用户登录验证

        android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...

  6. Android 之 AlertDialog 用户登录

    1:activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi ...

  7. Android中利用httpclient进行网络通信的方法(以用户登录为例说明)

    http://www.android100.org/html/201406/09/22915.html 1.服务器端 服务器端和android没有太大关系,对J2EE比较熟悉的话写起来应该很容易,这里 ...

  8. Google用户登录界面 Android实现

    实验效果: 项目目录: Java代码(放在Src文件下) package com.bn.chap9.login; import java.io.BufferedReader; import java. ...

  9. Android studio 开发一个用户登录界面

    Android studio 开发一个用户登录界面 activity_main.xml <?xml version="1.0" encoding="utf-8&qu ...

随机推荐

  1. JavaScript中依赖注入详细解析

    计算机编程的世界其实就是一个将简单的部分不断抽象,并将这些抽象组织起来的过程.JavaScript也不例外,在我们使用JavaScript编写应用时,我们是不是都会使用到别人编写的代码,例如一些著名的 ...

  2. windows2012R2虚拟机快速激活的方法

    相信Hyper-v管理员都有这样的经历,安装多台虚拟机后,都要一台一台手工激活,如果虚拟机足够多的话,这是一项很繁琐的工作,但从Windows Server 2012 R2开始,就不需要这么做了,微软 ...

  3. SVN在Android Studio中的配置

    在AndroidStudio中开发版本控制,除了Git就是SVN,和Eclipse不同Android Studio没有提供单独的插件,只能和SVN客户端关联使用,和Eclipse安装有很大区别,下面介 ...

  4. Laravel 4 Quick Tip: Custom Error Pages

    App::error(function($exception, $code) { switch ($code) { case 403: return Response::view('errors.40 ...

  5. OpenStack Neutron DVR L2 Agent的初步解析 (一)

    声明: 本博客欢迎转载,但请保留原作者信息! 作者:林凯 团队:华为杭州OpenStack团队 OpenStack Juno版本号已正式公布,这是这个开源云平台的10个版本号,在Juno版的Neutr ...

  6. CSS 命名规则

    CSS书写顺序: 位置属性(position, top, right, z-index,display, float等) 大小(width, height, padding, margin) 文字系列 ...

  7. 在公网(internet)上建立website时不能用http访问

    我们在internet的IDC提供的虚拟机上建了新的web site, 域名也从阿里巴巴那里得到二级域名,也经过映射到了虚机的IP, 在本机都可以用域名以Http方式访问,但在internet上的其它 ...

  8. Java HttpClient

    public class WebClient { public static final String POST_TYPE_JSON = "json"; public static ...

  9. Jquery+css实现图片无缝滚动轮播

    Today,在XX学院的教学视频中,偶尔看到了Jquery+css实现图片无缝滚动轮播视频教程,虽然以前已写过类似的,但是我感觉他学的比较精简.为了方便以后做项目时直接拷贝,特地写出来,顺便和大家分享 ...

  10. Hadoop 停止Job

    1.查看所有正在运行的Job Hadoop job -list 2.根据Id停止某一个Job Hadoop job –kill <JobID>