版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中怎么使用SQLite实现记住密码功能
这期内容当中在下将会给大家带来有关Android中怎么使用SQLite实现记住密码功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体内容如下package
com.example.alimjan.hello_world;
import
com.example.alimjan.hello_world.bean.UserInfo;
import
com.example.alimjan.hello_world.dataBase.UserDBHelper;
import
com.example.alimjan.hello_world.Utils.DateUtil;
import
android.app.AlertDialog;
import
android.content.Context;
import
android.content.DialogInterface;
import
android.content.Intent;
import
android.os.Bundle;
import
android.support.v7.app.AppCompatActivity;
import
android.text.Editable;
import
android.text.TextWatcher;
import
android.util.Log;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.view.View.OnFocusChangeListener;
import
android.widget.AdapterView;
import
android.widget.ArrayAdapter;
import
android.widget.Button;
import
android.widget.CheckBox;
import
android.widget.CompoundButton;
import
android.widget.EditText;
import
android.widget.RadioButton;
import
android.widget.RadioGroup;
import
android.widget.Spinner;
import
android.widget.TextView;
import
android.widget.Toast;
import
android.widget.AdapterView.OnItemSelectedListener;
public
class
class_4_2_3
extends
AppCompatActivity
implements
OnClickListener,
OnFocusChangeListener
{
private
RadioGroup
rg_login;
private
RadioButton
rb_password;
private
RadioButton
rb_verifycode;
private
EditText
et_phone;
private
TextView
tv_password;
private
EditText
et_password;
private
Button
btn_forget;
private
CheckBox
ck_remember;
private
Button
btn_login;
private
int
mRequestCode
=
0;
private
int
mType
=
0;
private
boolean
bRemember
=
false;
private
String
mPassword
=
"111111";
private
String
mVerifyCode;
private
UserDBHelper
mHelper;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.code_4_2_3);
rg_login
=
(RadioGroup)
findViewById(R.id.rg_login);
rb_password
=
(RadioButton)
findViewById(R.id.rb_password);
rb_verifycode
=
(RadioButton)
findViewById(R.id.rb_verifycode);
et_phone
=
(EditText)
findViewById(R.id.et_phone);
tv_password
=
(TextView)
findViewById(R.id.tv_password);
et_password
=
(EditText)
findViewById(R.id.et_password);
btn_forget
=
(Button)
findViewById(R.id.btn_forget);
ck_remember
=
(CheckBox)
findViewById(R.id.ck_remember);
btn_login
=
(Button)
findViewById(R.id.btn_login);
rg_login.setOnCheckedChangeListener(new
RadioListener());
ck_remember.setOnCheckedChangeListener(new
CheckListener());
et_phone.addTextChangedListener(new
HideTextWatcher(et_phone));
et_password.addTextChangedListener(new
HideTextWatcher(et_password));
btn_forget.setOnClickListener(this);
btn_login.setOnClickListener(this);
et_password.setOnFocusChangeListener(this);
ArrayAdapter<String>
typeAdapter
=
new
ArrayAdapter<String>(this,
R.layout.item_select,
typeArray);
typeAdapter.setDropDownViewResource(R.layout.item_dropdown);
Spinner
sp_type
=
(Spinner)
findViewById(R.id.sp_type);
sp_type.setPrompt("请选择用户类型");
sp_type.setAdapter(typeAdapter);
sp_type.setSelection(mType);
sp_type.setOnItemSelectedListener(new
TypeSelectedListener());
}
private
class
RadioListener
implements
RadioGroup.OnCheckedChangeListener
{
@Override
public
void
onCheckedChanged(RadioGroup
group,
int
checkedId)
{
if
(checkedId
==
R.id.rb_password)
{
tv_password.setText("登录密码:");
et_password.setHint("请输入密码");
btn_forget.setText("忘记密码");
ck_remember.setVisibility(View.VISIBLE);
}
else
if
(checkedId
==
R.id.rb_verifycode)
{
tv_password.setText("验证码:");
et_password.setHint("请输入验证码");
btn_forget.setText("获取验证码");
ck_remember.setVisibility(View.INVISIBLE);
}
}
}
private
String[]
typeArray
=
{"个人用户",
"公司用户"};
class
TypeSelectedListener
implements
OnItemSelectedListener
{
public
void
onItemSelected(AdapterView<?>
arg0,
View
arg1,
int
arg2,
long
arg3)
{
mType
=
arg2;
}
public
void
onNothingSelected(AdapterView<?>
arg0)
{
}
}
private
class
CheckListener
implements
CompoundButton.OnCheckedChangeListener
{
@Override
public
void
onCheckedChanged(CompoundButton
buttonView,
boolean
isChecked)
{
if
(buttonView.getId()
==
R.id.ck_remember)
{
bRemember
=
isChecked;
}
}
}
private
class
HideTextWatcher
implements
TextWatcher
{
private
EditText
mView;
private
int
mMaxLength;
private
CharSequence
mStr;
public
HideTextWatcher(EditText
v)
{
super();
mView
=
v;
mMaxLength
=
ViewUtil.getMaxLength(v);
}
@Override
public
void
beforeTextChanged(CharSequence
s,
int
start,
int
count,
int
after)
{
}
@Override
public
void
onTextChanged(CharSequence
s,
int
start,
int
before,
int
count)
{
mStr
=
s;
}
@Override
public
void
afterTextChanged(Editable
s)
{
if
(mStr
==
null
||
mStr.length()
==
0)
return;
if
((mStr.length()
==
11
&&
mMaxLength
==
11)
||
(mStr.length()
==
6
&&
mMaxLength
==
6))
{
ViewUtil.hideOneInputMethod(class_4_2_3.this,
mView);
}
}
}
@Override
public
void
onClick(View
v)
{
String
phone
=
et_phone.getText().toString();
if
(v.getId()
==
R.id.btn_forget)
{
if
(phone==null
||
phone.length()<11)
{
Toast.makeText(this,
"请输入正确的手机号",
Toast.LENGTH_SHORT).show();
return;
}
if
(rb_password.isChecked()
==
true)
{
Intent
intent
=
new
Intent(this,
class_4_2_3_1.class);
intent.putExtra("phone",
phone);
startActivityForResult(intent,
mRequestCode);
}
else
if
(rb_verifycode.isChecked()
==
true)
{
mVerifyCode
=
String.format("%06d",
(int)(Math.random()*1000000%1000000));
AlertDialog.Builder
builder
=
new
AlertDialog.Builder(this);
builder.setTitle("请记住验证码");
builder.setMessage("手机号"+phone+",本次验证码是"+mVerifyCode+",请输入验证码");
builder.setPositiveButton("好的",
null);
AlertDialog
alert
=
builder.create();
alert.show();
}
}
else
if
(v.getId()
==
R.id.btn_login)
{
if
(phone==null
||
phone.length()<11)
{
Toast.makeText(this,
"请输入正确的手机号",
Toast.LENGTH_SHORT).show();
return;
}
if
(rb_password.isChecked()
==
true)
{
if
(et_password.getText().toString().equals(mPassword)
!=
true)
{
Toast.makeText(this,
"请输入正确的密码",
Toast.LENGTH_SHORT).show();
return;
}
else
{
loginSuccess();
}
}
else
if
(rb_verifycode.isChecked()
==
true)
{
if
(et_password.getText().toString().equals(mVerifyCode)
!=
true)
{
Toast.makeText(this,
"请输入正确的验证码",
Toast.LENGTH_SHORT).show();
return;
}
else
{
loginSuccess();
}
}
}
}
@Override
protected
void
onActivityResult(int
requestCode,
int
resultCode,
Intent
data)
{
if
(requestCode
==
mRequestCode
&&
data!=null)
{
//用户密码已改为新密码
mPassword
=
data.getStringExtra("new_password");
}
}
//从修改密码页面返回登录页面,要清空密码的输入框
@Override
protected
void
onRestart()
{
et_password.setText("");
super.onRestart();
}
@Override
protected
void
onResume()
{
super.onResume();
mHelper
=
UserDBHelper.getInstance(this,
2);
mHelper.openWriteLink();
}
@Override
protected
void
onPause()
{
super.onPause();
mHelper.closeLink();
}
private
void
loginSuccess()
{
String
desc
=
String.format("您的手机号码是%s,类型是%s。恭喜你通过登录验证,点击“确定”按钮返回上个页面",
et_phone.getText().toString(),
typeArray[mType]);
AlertDialog.Builder
builder
=
new
AlertDialog.Builder(this);
builder.setTitle("登录成功");
builder.setMessage(desc);
builder.setPositiveButton("确定返回",
new
DialogInterface.OnClickListener()
{
@Override
public
void
onClick(DialogInterface
dialog,
int
which)
{
finish();
}
});
builder.setNegativeButton("我再看看",
null);
AlertDialog
alert
=
builder.create();
alert.show();
if
(bRemember)
{
UserInfo
info
=
new
UserInfo();
info.phone
=
et_phone.getText().toString();
info.password
=
et_password.getText().toString();
info.update_time
=
DateUtil.getCurDateStr("yyyy-MM-dd
HH:mm:ss");
mHelper.insert(info);
}
}
//为什么光标进入密码框事件不选onClick?因为要点两下才会触发onClick动作(第一下是切换焦点动作)
@Override
public
void
onFocusChange(View
v,
boolean
hasFocus)
{
String
phone
=
et_phone.getText().toString();
if
(v.getId()
==
R.id.et_password)
{
if
(phone.length()
>
0
&&
hasFocus
==
true)
{
UserInfo
info
=
mHelper.queryByPhone(phone);
if
(info
!=
null)
{
et_password.setText(info.password);
}else{
et_password.setText("");
}
}
}
}
public
static
void
startHome(Context
mContext)
{
Intent
intent
=
new
Intent(mContext,
class_4_2_3.class);
mContext.startActivity(intent);
}
}<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical"
android:padding="5dp"
>
<RadioGroup
android:id="@+id/rg_login"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/rb_password"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:checked="true"
android:gravity="left|center"
android:text="密码登录"
android:textColor="@color/black"
android:textSize="17sp"
/>
<RadioButton
android:id="@+id/rb_verifycode"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:checked="false"
android:gravity="left|center"
android:text="验证码登录"
android:textColor="@color/black"
android:textSize="17sp"
/>
</RadioGroup>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
>
<TextView
android:id="@+id/tv_type"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:gravity="center"
android:text="我是:"
android:textColor="@color/black"
android:textSize="17sp"
/>
<Spinner
android:id="@+id/sp_type"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toRightOf="@+id/tv_type"
android:gravity="left|center"
android:spinnerMode="dialog"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
>
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:gravity="center"
android:text="手机号码:"
android:textColor="@color/black"
android:textSize="17sp"
/>
<EditText
android:id="@+id/et_phone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_toRightOf="@+id/tv_phone"
android:background="@drawable/editext_selector"
android:gravity="left|center"
android:hint="请输入手机号码"
android:inputType="number"
android:maxLength="11"
android:textColor="@color/black"
android:textColorHint="@color/grey"
android:textCursorDrawable="@drawable/text_cursor"
android:textSize="17sp"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
>
<TextView
android:id="@+id/tv_password"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:gravity="center"
android:text="登录密码:"
android:textColor="@color/black"
android:textSize="17sp"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toRightOf="@+id/tv_password"
>
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/editext_selector"
android:gravity="left|center"
android:hint="请输入密码"
android:inputType="numberPassword"
android:maxLength="6"
android:textColor="@color/black"
android:textColorHint="@color/grey"
android:textCursorDrawable="@drawable/text_cursor"
android:textSize="17sp"
/>
<Button
android:id="@+id/btn_forget"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"
android:gravity="center"
android:text="忘记密码"
android:textColor="@color/black"
android:textSize="17sp"
/>
</FrameLayout>
</RelativeLayout>
<CheckBox
android:id="@+id/ck_remember"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:button="@drawable/checkbox_selector"
android:checked="false"
android:padding="10dp"
android:text="记住密码"
android:textColor="@color/black"
android:textSize="17sp"
/>
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录"
android:textColor="@color/black"
android:textSize="22sp"
/>
</LinearLayout>package
com.example.alimjan.hello_world;
/**
*
Created
by
alimjan
on
7/4/2017.
*/
import
android.app.Activity;
import
android.app.AlertDialog;
import
android.content.Context;
import
android.content.Intent;
import
android.os.Bundle;
import
android.support.v7.app.AppCompatActivity;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.EditText;
import
android.widget.Toast;
public
class
class_4_2_3_1
extends
AppCompatActivity
implements
OnClickListener
{
private
EditText
et_password_first;
private
EditText
et_password_second;
private
EditText
et_verifycode;
private
String
mVerifyCode;
private
String
mPhone;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.code_4_2_3_1);
et_password_first
=
(EditText)
findViewById(R.id.et_password_first);
et_password_second
=
(EditText)
findViewById(R.id.et_password_second);
et_verifycode
=
(EditText)
findViewById(R.id.et_verifycode);
findViewById(R.id.btn_verifycode).setOnClickListener(this);
findViewById(R.id.btn_confirm).setOnClickListener(this);
mPhone
=
getIntent().getStringExtra("phone");
}
@Override
public
void
onClick(View
v)
{
if
(v.getId()
==
R.id.btn_verifycode)
{
if
(mPhone==null
||
mPhone.length()<11)
{
Toast.makeText(this,
"请输入正确的手机号",
Toast.LENGTH_SHORT).show();
return;
}
mVerifyCode
=
String.format("%06d",
(int)
(Math.random()
*
1000000
%
1000000));
AlertDialog.Builder
builder
=
new
AlertDialog.Builder(this);
builder.setTitle("请记住验证码");
builder.setMessage("手机号"+mPhone+",本次验证码是"+mVerifyCode+",请输入验证码");
builder.setPositiveButton("好的",
null);
AlertDialog
alert
=
builder.create();
alert.show();
}
else
if
(v.getId()
==
R.id.btn_confirm)
{
String
password_first
=
et_password_first.getText().toString();
String
password_second
=
et_password_second.getText().toString();
if
(password_first==null
||
password_first.length()<6
||
password_second==null
||
password_second.length()<6)
{
Toast.makeText(this,
"请输入正确的新密码",
Toast.LENGTH_SHORT).show();
return;
}
if
(password_first.equals(password_second)
!=
true)
{
Toast.makeText(this,
"两次输入的新密码不一致",
Toast.LENGTH_SHORT).show();
return;
}
if
(et_verifycode.getText().toString().equals(mVerifyCode)
!=
true)
{
Toast.makeText(this,
"请输入正确的验证码",
Toast.LENGTH_SHORT).show();
return;
}
else
{
Toast.makeText(this,
"密码修改成功",
Toast.LENGTH_SHORT).show();
Intent
intent
=
new
Intent();
intent.putExtra("new_password",
password_first);
setResult(Activity.RESULT_OK,
intent);
finish();
}
}
}
public
static
void
startHome(Context
mContext)
{
Intent
intent
=
new
Intent(mContext,
class_4_2_3_1.class);
mContext.startActivity(intent);
}
}<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical"
android:padding="5dp"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
>
<TextView
android:id="@+id/tv_password_first"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:gravity="center"
android:text="输入新密码:"
android:textColor="@color/black"
android:textSize="17sp"
/>
<EditText
android:id="@+id/et_password_first"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_toRightOf="@+id/tv_password_first"
android:background="@drawable/editext_selector"
android:gravity="left|center"
android:hint="请输入新密码"
android:inputType="numberPassword"
android:maxLength="11"
android:textColor="@color/black"
android:textColorHint="@color/grey"
android:textCursorDrawable="@drawable/text_cursor"
android:textSize="17sp"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
>
<TextView
android:id="@+id/tv_password_second"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:gravity="center"
android:text="确认新密码:"
android:textColor="@color/black"
android:textSize="17sp"
/>
<EditText
android:id="@+id/et_password_second"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_toRightOf="@+id/tv_password_sec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年居间租赁合同3000字范本
- 产品oem合同范本2024年
- 2024年公司收购协议书模板
- 2024年课程培训合作协议
- 2024年山东移动企业邮箱客户服务协议
- 2024年员工中英文保密协议书
- 2024年信用卡保险合同责任范围
- 2024年司机管理协议
- 古镇火锅店装修施工合同
- 体育馆装修家具采购合同
- 教育集团教师培养方案
- 一例登革热合并凝血功能障碍患者的个案护理20190-7
- 小儿重症肺炎课件
- 啤酒终端销售培训课件
- 门诊病历书写模板全
- 新旧生活对比图片.PPT
- 输变电工程基础工程施工工艺(附实景图)
- 德宏傣族时间谚语分析
- 高等医学院校临床教学基地设置条件与认定程序
- 泰戈尔的《飞鸟和鱼》全诗(中英文对照)
- 19秋《西方行政学说》复习提示(仅供参考)(经典实用)
评论
0/150
提交评论