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 ...
随机推荐
- RAM区间最值
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就 ...
- selenium webdriver python 环境搭建
1. 安装python https://www.python.org/getit/ 选择2.7版本,下载安装即可. 验证是否安装成功:打开cmd,输入"python -V",显示p ...
- QE是什么
量化宽松(Quantitative Easing,简称QE),是一种货币政策,主要指各国央行通过公开市场购买政府债券.银行金融资产等做法.量化宽松直接导致市场的货币供应量增加,可视为变相“印钞”.市场 ...
- Android ExpandableListView BaseExpandableListAdapter (类似QQ分组列表)
分组列表视图(ExpandableListView) 和ListView不同的是它是一个两级的滚动列表视图,每一个组可以展开,显示一些子项,类似于QQ列表,这些项目来至于ExpandableListA ...
- 百练2755 奇妙的口袋 【深搜】or【动规】or【普通递归】or【递推】
总Time Limit: 10000ms Memory Limit: 65536kB 有一个奇妙的口袋.总的容积是40,用这个口袋能够变出一些物品,这些物品的整体积必须是40.John如今有n个 ...
- TinyXml快速入门(二)
在<TinyXml快速入门(一)>中我介绍了使用TinyXml库如何创建和打印xml文件,下面我介绍使用tinyxml库对xml文件进行一系列的操作,包括获取xml文件声明,查询指定节点. ...
- 使用socket实现聊天功能
public class Service { //服务器 public static void main(String[] args) { ServerSocket serverSocket=null ...
- nyoj 36
//这一题是 nyoj 36 是一道求最长公共子序列的题,也是用dp做出来的 核心代码也就是一句,题目大概思路是先找到两组字符串里面相同的字母 在二维数组里面更新每次比较过后dp的值,空想很难理解 ...
- linux的comm命令
http://blog.csdn.net/apache6/article/details/5789669
- InstallShield 覆盖安装
“吾乐吧软件站”提供了很全面详细的InstallShield制作安装包教程(http://www.wuleba.com/23892.html),但是按上面的方法再次制作的升级安装包,安装后会在系统中同 ...