版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】怎么在Android中使用SharedPreferences實現(xiàn)記住密碼和自動登錄
本篇文章給大家分享的是有關(guān)怎么在Android中使用SharedPreferences實現(xiàn)記住密碼和自動登錄,在下覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著在下一起來看看吧。XML文件<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/bj"
tools:context="com.example.application.MainActivity">
<ImageView
android:layout_marginTop="50dp"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/login_tx_1"
android:layout_gravity="center"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
android:hint="請輸入賬號"
android:gravity="center"
android:paddingRight="100dp"
android:id="@+id/login_uname"
/>
<TextView
android:layout_width="38dp"
android:layout_height="33dp"
android:layout_marginLeft="30dp"
android:padding="6dp"
android:gravity="center"
android:drawableLeft="@drawable/uname"
/>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
android:hint="請輸入密碼"
android:gravity="center"
android:paddingRight="100dp"
android:password="true"
android:id="@+id/login_upass"
/>
<TextView
android:layout_width="38dp"
android:layout_height="33dp"
android:layout_marginLeft="30dp"
android:padding="6dp"
android:gravity="center"
android:drawableLeft="@drawable/upass"
/>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="記住密碼"
android:id="@+id/login_auto"
/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:text="自動登錄"
android:id="@+id/login_btn"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_margin="15dp"
>
<ImageButton
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/login_qq"
/>
<ImageButton
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/login_weixin"
android:layout_marginLeft="60dp"
/>
<ImageButton
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/login_xinlan"
android:layout_marginLeft="60dp"
android:id="@+id/login_xinlan"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/a_radio_button_selector_1"
android:gravity="center"
android:text="登錄"
android:id="@+id/login_login"
/>
<Button
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:background="@drawable/a_radio_button_selector_1"
android:gravity="center"
android:text="忘記密碼"
android:id="@+id/login_find"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="沒有賬號,立即注冊"
android:textColor="#6efafa"
android:textSize="15dp"
android:onClick="JumpRegister"
/>
</LinearLayout>
</LinearLayout>Java文件package
com.example.application;
import
android.content.Intent;
import
android.content.SharedPreferences;
import
android.database.Cursor;
import
android.database.sqlite.SQLiteDatabase;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.view.Window;
import
android.widget.Button;
import
android.widget.CheckBox;
import
android.widget.EditText;
import
android.widget.ImageButton;
import
android.widget.Toast;
import
com.sun.util.DBHelper;
import
java.util.HashMap;
import
cn.sharesdk.framework.Platform;
import
cn.sharesdk.framework.PlatformActionListener;
import
cn.sharesdk.framework.ShareSDK;
import
cn.sharesdk.sina.weibo.SinaWeibo;
public
class
MainActivity
extends
AppCompatActivity
{
public
static
String
LoginUid=null;
public
static
String
LoginName=null;
private
Button
login_login;
private
Button
login_find;
private
EditText
login_uname;
private
EditText
login_upass;
private
CheckBox
login_auto;
private
CheckBox
login_btn;
private
SharedPreferences
sp;
private
ImageButton
login_xinlan;
private
Platform
weibo;
private
DBHelper
dbHelper;
private
SQLiteDatabase
sqLiteDatabase;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//獲取控件
login_uname
=
(EditText)
findViewById(R.id.login_uname);
login_upass
=
(EditText)
findViewById(R.id.login_upass);
login_auto
=
(CheckBox)
findViewById(R.id.login_auto);
//記住密碼
login_btn
=
(CheckBox)
findViewById(R.id.login_btn);
//自動登錄
login_login
=
(Button)
findViewById(R.id.login_login);
//登錄
login_find
=
(Button)
findViewById(R.id.login_find);
login_xinlan
=
(ImageButton)
findViewById(R.id.login_xinlan);
//調(diào)用數(shù)據(jù)庫
dbHelper
=
new
DBHelper(this,"dtb.db",null,1);
sqLiteDatabase
=
dbHelper.getWritableDatabase();
//第三方登錄
=
ShareSDK.getPlatform(SinaWeibo.NAME);
login_xinlan.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
v)
{
//回調(diào)信息,可以在這里獲取基本的授權(quán)返回的信息,但是注意如果做提示和UI操作要傳到主線程handler里去執(zhí)行
weibo.setPlatformActionListener(new
PlatformActionListener
()
{
@Override
public
void
onComplete(Platform
platform,
int
i,
HashMap<String,
Object>
hashMap)
{
String
openid
=
platform.getDb().getUserId();
String
nickname
=
platform.getDb().getUserName();
Cursor
cursor=sqLiteDatabase.rawQuery("select
*
from
dtb_users
where
uname=?",new
String[]{openid});
LoginUid=cursor.getString(cursor.getColumnIndex("uid"));
if(cursor.moveToNext()){
Log.i("test","已經(jīng)注冊過!");
}else{
sqLiteDatabase.execSQL("insert
into
dtb_users(uname,upass,name,levelnumber)
values('"+openid+"','null','"+nickname+"','"+1+"')");
}
//跳轉(zhuǎn)
MainActivity.LoginName=openid;
Intent
intent=new
Intent(MainActivity.this,MainMianActivity.class);
startActivity(intent);
}
@Override
public
void
onError(Platform
arg0,
int
arg1,
Throwable
arg2)
{
//
TODO
Auto-generated
method
stub
arg2.printStackTrace();
}
@Override
public
void
onCancel(Platform
arg0,
int
arg1)
{
//
TODO
Auto-generated
method
stub
}
});
//authorize與showUser單獨調(diào)用一個即可
weibo.authorize();//單獨授權(quán),OnComplete返回的hashmap是空的
weibo.showUser(null);//授權(quán)并獲取用戶信息
//移除授權(quán)
//
weibo.removeAccount(true);
}
});
//自動登錄判斷
sp
=
this.getSharedPreferences("userInfo",0);
String
name=sp.getString("USER_NAME",
"");
String
pass
=sp.getString("PASSWORD",
"");
boolean
choseRemember
=sp.getBoolean("remember",
false);
boolean
choseAutoLogin
=sp.getBoolean("autologin",
false);
//如果上次選了記住密碼,那進(jìn)入登錄頁面也自動勾選記住密碼,并填上用戶名和密碼
if(choseRemember){
login_uname.setText(name);
login_upass.setText(pass);
login_auto.setChecked(true);
}
//如果上次登錄選了自動登錄,那進(jìn)入登錄頁面也自動勾選自動登錄
if(choseAutoLogin){
login_btn.setChecked(true);
Cursor
cursor=
sqLiteDatabase.rawQuery("select
*
from
dtb_users
where
uname=?
and
upass=?",new
String[]{name,pass});
if(cursor.moveToNext()){
new
LoginThread().start();
LoginName=name;
LoginUid=cursor.getString(cursor.getColumnIndex("uid"));
}
}
//
登錄監(jiān)聽事件
現(xiàn)在默認(rèn)為用戶名為:admin
密碼:123
login_login.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
v)
{
String
userName=login_uname.getText().toString();
String
userPass=login_upass.getText().toString();
SharedPreferences.Editor
editor
=sp.edit();
Cursor
cursor=
sqLiteDatabase.rawQuery("select
*
from
dtb_users
where
uname=?
and
upass=?",new
String[]{userName,userPass});
if(cursor.moveToNext()){//判斷是否查詢到此數(shù)據(jù)
Toast.makeText(MainActivity.this,"登錄成功",
Toast.LENGTH_SHORT).show();
LoginName=userName;
LoginUid=cursor.getString(cursor.getColumnIndex("uid"));
//是否記住密碼
//記住用戶名、密碼、
editor.putString("USER_NAME",
userName);
editor.putString("PASSWORD",userPass);
if(login_auto.isChecked()){
e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全員A證考試考前沖刺練習(xí)試題附參考答案詳解(典型題)
- 2025年師德師風(fēng)考試復(fù)習(xí)題庫詳細(xì)題庫(答案+解析)
- 招聘28人考前自測高頻考點模擬試題附答案詳解(b卷)
- 安全員A證考試練習(xí)題(一)附參考答案詳解【培優(yōu)b卷】
- 安全員A證考試提分評估復(fù)習(xí)附參考答案詳解(滿分必刷)
- 處招聘社區(qū)工作者2人筆試備考題庫及完整答案詳解1套
- 未來五年精制大米企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 安全員A證考試通關(guān)模擬題庫附完整答案詳解(典優(yōu))
- 未來五年農(nóng)業(yè)機械產(chǎn)品安全檢驗服務(wù)企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 未來五年交接箱企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 河南省2025年普通高等學(xué)校對口招收中等職業(yè)學(xué)校畢業(yè)生考試語文試題 答案
- 冬季道路施工應(yīng)對措施
- 云南省昆明市官渡區(qū)2024-2025學(xué)年九年級上學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測英語試題(含答案)
- 企業(yè)員工培訓(xùn)分層方案
- 體檢中心新員工培訓(xùn)教材
- 衛(wèi)生院綜合樓施工組織設(shè)計
- 淮安市2022-2023學(xué)年七年級上學(xué)期期末歷史試題【帶答案】
- 腦動脈供血不足的護(hù)理查房
- 《中醫(yī)藥健康知識講座》課件
- 中國地級市及各省份-可編輯標(biāo)色地圖
- 急性消化道出血的急診處理
評論
0/150
提交評論