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. adb Logcat用法

    转自: http://blog.csdn.net/tiantianshangcha/article/details/6288537 个人认为有一下几个常用命令: adb logcat -b radio ...

  2. C - A Simple Problem with Integers - poj 3468(区间更新)

    题意:有一个比较长的区间可能是100000.长度, 每个点都有一个值(值还比较大),现在有一些操作,C abc, 把区间a-b内全部加上c, Qab,求区间ab的值. 分析:很明显我们不可能对区间的每 ...

  3. wxPython学习笔记(二)

    如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...

  4. Java中迭代列表中数据时几种循环写法的效率比较

    Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较.虽然网上已经有了类似的文章,但是对他们的结论并不认同. 常见的实现方法: 1.for循环: for(int i = 0; i ...

  5. C++中的构造函数和析构函数

    构造函数: 在类实例化对象时自动执行,对类中的数据进行初始化.构造函数可以从载,可以有多个,但是只能有一个缺省构造函数. 析构函数: 在撤销对象占用的内存之前,进行一些操作的函数.析构函数不能被重载, ...

  6. cocos2dx3.0 超级马里奥开发笔记(两)——正确的规划游戏逻辑

    我将不得不拿出一个完整的开发笔记.由于个人原因.代码已OK该,博客,那么就不要粘贴代码,直接解释了整个游戏设计,更确切地说,当新手应该注意的地方发展. 1.继承类和扩展作用的权----展阅读(MVC) ...

  7. ViewPager 详解(五)-----使用Fragment实现ViewPager滑动

    前言:前几篇文章讲解了ViewPager的普通实现方法,但Android官方最推荐的一种实现方法却是使用fragment,下面我们使用fragment来重新实现一下第一篇<ViewPager 详 ...

  8. 05-图2. Saving James Bond - Easy Version (25)

    1 边界和湖心小岛分别算一个节点.连接全部距离小于D的鳄鱼.时间复杂度O(N2) 2 推断每一个连通图的节点中是否包括边界和湖心小岛,是则Yes否则No 3 冗长混乱的函数參数 #include &l ...

  9. JuiceSSh破解分析

    JuiceSSH是一款免费的远程ssh客户端,感觉是一款挺优秀的软件,里边有一些高级功能需要购买高级版才能使用,这里便对其对高级功能的破解进行分析. 本文仅用于学习交流使用,请尊重作者,勿在网上肆意发 ...

  10. DataTable操作工具类DataTableHelper

    DataTable操作工具类DataTableHelper. 功能介绍: 将泛型集合填充为数据表 将泛型填充为数据表 将对象集合填充为数据表 将对象填充为数据表 将定IDictionary数据转换为D ...