【移动应用开发技术】Android中怎么使用SQLite实现记住密码功能_第1页
【移动应用开发技术】Android中怎么使用SQLite实现记住密码功能_第2页
【移动应用开发技术】Android中怎么使用SQLite实现记住密码功能_第3页
【移动应用开发技术】Android中怎么使用SQLite实现记住密码功能_第4页
【移动应用开发技术】Android中怎么使用SQLite实现记住密码功能_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论