登錄一個APP,怎么做到第二次或者多次登錄之后他不會還在登錄界面而是在主界面。
uj5u.com熱心網友回復:
保存登錄資訊。在啟動頁判斷是否存在登錄資訊然后進行跳轉唄uj5u.com熱心網友回復:
有具體代碼嗎?。。。。
uj5u.com熱心網友回復:
你的APP有開始頁面嗎? 你說的這個邏輯是: 首先用戶在第一次登陸的時候,你把用戶的賬戶資訊保存到 Share里;后面在應用第二次啟動的時候,在開始界面就來進行判斷賬戶里的資訊是否正確,也可以和服務器進行互動驗證,驗證成功了,就直接跳轉到主頁好了uj5u.com熱心網友回復:
就我們平時用的APP,第一次登錄,第二次就不用登錄直接到主界面。有碼嗎?(舉個例子唄),sharedpreferences不是很會
uj5u.com熱心網友回復:
private String accountValue;
private String passwordValue;
private static String IP = "10.7.70.75:8081";
//賬號
private static String account;
//密碼
private static String passw;
// 登陸按鈕
private Button logbtn;
// 退出文本,注冊文本,忘記密碼文本
private TextView Exitv,regtv,ForGetTv,ChangeLa,jizmi,zidongde;
// 顯示用戶名和密碼
EditText username, password;
//復選框-記住密碼,自動登錄
private CheckBox jizhupassw,autolog;
//記住密碼標志
private boolean mPasswordFlag = false;
//自動登錄標志
private boolean mAutoLoginFlag = false;
//定義兩個常量一個成功一個失敗
private static final int SUCCEED = 665;
private static final int FALL = 894;
// 1 is chinese 2 is english
private static int CHANGESL = 1;
private boolean qiehuan = false;
AlertDialog dialogs;
// 要申請的權限
private String[] permissions = {Manifest.permission.ACCESS_NETWORK_STATE,Manifest.permission.ACCESS_WIFI_STATE
,Manifest.permission.INTERNET,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
// 獲取控制元件
username = findViewById(R.id.signup_user_Edta);
password = findViewById(R.id.signup_pswd_Edta);
logbtn = findViewById(R.id.signup_Btna);
regtv = findViewById(R.id.goto_reg_texta);
jizhupassw = findViewById(R.id.cb_passworda);
autolog = findViewById(R.id.cb_logina);
Exitv = findViewById(R.id.goto_exit_texta);
Exitv.setVisibility(View.INVISIBLE);
ForGetTv= findViewById(R.id.fogetpsw_tv);
ForGetTv.setVisibility(View.INVISIBLE);
ChangeLa = findViewById(R.id.ChangesLa_tv);
jizmi = findViewById(R.id.jizhumima);
zidongde = findViewById(R.id.zidongdenglu);
// 版本判斷,當手機系統大于 23 時,才有必要去判斷權限是否獲取
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int e = ContextCompat.checkSelfPermission(getApplicationContext(), permissions[3]);
int f = ContextCompat.checkSelfPermission(getApplicationContext(), permissions[4]);
// 權限是否已經 授權 GRANTED---授權 DINIED---拒絕
if (e!=PackageManager.PERMISSION_GRANTED &&f!=PackageManager.PERMISSION_GRANTED) {
// 如果沒有授予該權限,就去提示用戶請求
startRequestPermission();
}
}
SharedPreferences sp = getSharedPreferences("LoadTypeApp",MODE_PRIVATE);
//如果不為空
if(sp!=null){
accountValue = sp.getString("U", "");
passwordValue = sp.getString("P", "");
mPasswordFlag = sp.getBoolean("Rem", false);
mAutoLoginFlag = sp.getBoolean("Auto", false);
username.setText(accountValue);
CHANGESL = sp.getInt("change",1);
qiehuan = sp.getBoolean("qiehuan",false);
}
if(CHANGESL==2)
{
password.setHint(R.string.passwords);
jizmi.setText(R.string.repassws);
zidongde.setText(R.string.autologins);
logbtn.setText(R.string.logins);
regtv.setText(R.string.regiss);
ChangeLa.setText(R.string.chinese);
LoginActivity.this.setTitle(R.string.app_names);
}else if(CHANGESL == 1){
password.setHint(R.string.password);
jizmi.setText(R.string.repassw);
zidongde.setText(R.string.autologin);
logbtn.setText(R.string.login);
regtv.setText(R.string.regis);
ChangeLa.setText(R.string.enwen);
LoginActivity.this.setTitle(R.string.app_name);
}
//確定為true獲取 記住密碼,打鉤
if (mPasswordFlag) {
jizhupassw.setChecked(true);
password.setText(passwordValue);
}else
{
jizhupassw.setChecked(false);
//清空密碼輸入框
password.setText("");
}
//選擇了自動登錄后直接登錄
if (mAutoLoginFlag){
autolog.setChecked(true);
HttpPost(accountValue,passwordValue);
}else
{
autolog.setChecked(false);
}
// 設定按鈕監聽器
logbtn.setOnClickListener(this);
regtv.setOnClickListener(this);
//Exitv.setOnClickListener(this);
//ForGetTv.setOnClickListener(this);
jizhupassw.setOnClickListener(this);
ChangeLa.setOnClickListener(this);
jizhupassw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!isChecked){
autolog.setChecked(false);
//清空密碼輸入框
password.setText("");
}
}});
}
/**
* 開始提交請求權限
*/
private void startRequestPermission() {
ActivityCompat.requestPermissions(this, permissions, 321);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 321) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
// 判斷用戶是否 點擊了不再提醒。(檢測該權限是否還可以申請)
boolean d = shouldShowRequestPermissionRationale(permissions[3]);
if (d) {
// 用戶還是想用我的 APP 的
// 提示用戶去應用設定界面手動開啟權限
showDialogTipUserGoToAppSettting();
} else {
finish();
}
boolean e = shouldShowRequestPermissionRationale(permissions[4]);
if (e) {
// 用戶還是想用我的 APP 的
// 提示用戶去應用設定界面手動開啟權限
showDialogTipUserGoToAppSettting();
} else {
finish();
}
} else {
//獲取權限成功提示,可以不要
}
}
}
}
/**
* 提示用戶去應用設定界面手動開啟權限
*/
private void showDialogTipUserGoToAppSettting() {
if(CHANGESL == 1) {
dialogs = new AlertDialog.Builder(this).setTitle(LoginActivity.this.getString(R.string.neicun))
.setMessage(LoginActivity.this.getString(R.string.neicunshez))
.setPositiveButton(LoginActivity.this.getString(R.string.lijikaiqi), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 跳轉到應用設定界面
goToAppSetting();
}
}).setNegativeButton(LoginActivity.this.getString(R.string.canc), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//finish();
}
}).setCancelable(false).show();
}else if(CHANGESL == 2){
dialogs = new AlertDialog.Builder(this).setTitle(LoginActivity.this.getString(R.string.neicuns))
.setMessage(LoginActivity.this.getString(R.string.neicunshezs))
.setPositiveButton(LoginActivity.this.getString(R.string.lijikaiqis), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 跳轉到應用設定界面
goToAppSetting();
}
}).setNegativeButton(LoginActivity.this.getString(R.string.cancs), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//finish();
}
}).setCancelable(false).show();
}
}
/**
* 跳轉到當前應用的設定界面
*/
private void goToAppSetting() {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, 4);
}
static String accounts ;
static String passws ;
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.signup_Btna:
account = username.getText().toString().trim();
passw = password.getText().toString().trim();
if(!account.isEmpty())
{
String [] mail = account.split("@");
if (!mail[1].equals("askey.com")) {
if(CHANGESL == 1){
Toast.makeText(LoginActivity.this, LoginActivity.this.getString(R.string.MailGS),
Toast.LENGTH_SHORT).show();
}else if(CHANGESL == 2){
Toast.makeText(LoginActivity.this, LoginActivity.this.getString(R.string.MailGSs),
Toast.LENGTH_SHORT).show();
}
return;
}
}
else
{
if(CHANGESL == 1){
Toast.makeText(LoginActivity.this, LoginActivity.this.getString(R.string.MailGS),
Toast.LENGTH_SHORT).show();
}else if(CHANGESL == 2){
Toast.makeText(LoginActivity.this, LoginActivity.this.getString(R.string.MailGSs),
Toast.LENGTH_SHORT).show();
}
return;
}
if(passw.isEmpty())
{
if(CHANGESL == 1){
Toast.makeText(LoginActivity.this,LoginActivity.this.getString(R.string.InputPas)
, Toast.LENGTH_SHORT).show();
}else if(CHANGESL == 2){
Toast.makeText(LoginActivity.this,LoginActivity.this.getString(R.string.InputPass)
, Toast.LENGTH_SHORT).show();
}
return;
}
SharedPreferences sp = getSharedPreferences("LoadTypeApp",MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
//創建Editor物件,寫入值
editor.putString("U", account);
if(jizhupassw.isChecked()){
mPasswordFlag = true;
editor.putBoolean("Rem", mPasswordFlag);
editor.putString("P", passw);
//選中自動登錄
if (autolog.isChecked()){
mAutoLoginFlag = true;
}else{
mAutoLoginFlag = false;
}
editor.putBoolean("Auto", mAutoLoginFlag);
}else{
//取消自動登錄和記住密碼,清空密碼
mPasswordFlag = false;
mAutoLoginFlag = false;
editor.putString("P", "");
editor.putBoolean("Rem", mPasswordFlag);
editor.putBoolean("Auto", mAutoLoginFlag);
}
// 提交保存
editor.commit();
break;
uj5u.com熱心網友回復:
這個是讓你參考的,你可以只看 SharedPreferences 有關的就可以了uj5u.com熱心網友回復:
我看看,行就結帖。。。。。
uj5u.com熱心網友回復:
首先在你需要存起來的地方把賬號密碼存起來
SharedPreferences shared = getSharedPreferences("Login", MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString("phone", phone);
editor.putString("pwd", pwd);
editor.commit();
然后再你進入首頁之前的頁面中獲取存起來的賬號密碼
SharedPreferences spRegister = getSharedPreferences("Login", MODE_PRIVATE);
userPhone = spRegister.getString("phone", "");
再加以判斷這個userPhone 是不是為空,為空就跳到登陸界面,不為空就直接跳到首頁
uj5u.com熱心網友回復:
啟動頁后臺自動登錄 登錄成功跳主頁 不成功跳登錄頁轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/75628.html
標籤:Android
