簡單仿QQ登入介面,儲存資訊到sd卡
1.java類
MainActivity
package com.example.bhj.qqlogin;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
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.Toast;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText etNumber;
private EditText etPassword;
private CheckBox cbRememberPwd;
private CheckBox cbAutoLogin;
private Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//不顯示標題,必須寫在setContentView前面
setContentView(R.layout.activity_main);
// /data/data/包名/files
this.getFilesDir();
etNumber = findViewById(R.id.et_number);
etPassword = findViewById(R.id.et_password);
cbRememberPwd = findViewById(R.id.cb_remember_pwd);
cbAutoLogin = findViewById(R.id.cb_auto_login);
btnLogin = findViewById(R.id.btn_login);
btnLogin.setOnClickListener(this);
//回顯示資料
Map<String, String> userInfoMap = UtilsOfSDCard.getUserInfo(this);
if (userInfoMap != null) {
etNumber.setText(userInfoMap.get("number"));
etPassword.setText(userInfoMap.get("password"));
}
}
@Override
public void onClick(View v) {//執行登入的操作
//1.取出賬號和密碼
String number = etNumber.getText().toString();
String password = etPassword.getText().toString();
if (TextUtils.isEmpty(number) || TextUtils.isEmpty(password)) {
Toast.makeText(this, "請正確輸入", Toast.LENGTH_SHORT).show();
return;
}
//2.判斷是否記住密碼,並存起來
if (cbRememberPwd.isChecked()) {
Log.d("bai", "記住密碼");
boolean isSuccess = UtilsOfSDCard.saveUserInfo(this, number, password);
if (isSuccess) {
Log.d("bai", "儲存成功");
Toast.makeText(this, "儲存成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "儲存失敗", Toast.LENGTH_SHORT).show();
}
}
// 3.登入
Toast.makeText(this, "登陸成功", Toast.LENGTH_SHORT).show();
}
}
Utils
package com.example.bhj.qqlogin; import android.content.Context; import android.text.TextUtils; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; /** * Created by bhj on 2018/9/6. */ public class Utils { /** * 儲存使用者資訊 * * @param number qq號 * @param password 密碼 * @return true 成功 */ public static boolean saveUserInfo(String number, String password) { try { String path = "/data/data/com.example.bhj.myapplication/bhjqq.txt"; FileOutputStream fos = new FileOutputStream(path); //3966554#12154684 String data = number + "##" + password; fos.write(data.getBytes()); fos.flush(); fos.close(); return true; } catch (Exception e) { e.printStackTrace(); } return false; } /** * 儲存使用者資訊到本地 * * @param number qq號 * @param password 密碼 * @return true 成功 */ public static boolean saveUserInfo(Context context, String number, String password) { try { //String path = "/data/data/com.example.bhj.myapplication/bhjqq.txt" File filesDir = context.getFilesDir(); File f = new File(filesDir, "bhjqq.txt"); FileOutputStream fos = new FileOutputStream(f); //3966554#12154684 String data = number + "##" + password; fos.write(data.getBytes()); fos.flush(); fos.close(); return true; } catch (Exception e) { e.printStackTrace(); } return false; } public static Map<String, String> getUserInfo() { try { String path = "/data/data/com.example.bhj.myapplication/bhjqq.txt"; FileInputStream fis = new FileInputStream(path); //字元流物件 BufferedReader buf = new BufferedReader(new InputStreamReader(fis)); String text = buf.readLine(); if (!TextUtils.isEmpty(text)) { String[] split = text.split("##"); Map<String, String> userInfoMap = new HashMap<String, String>(); userInfoMap.put("number", split[0]); userInfoMap.put("password", split[1]); return userInfoMap; } } catch (Exception e) { e.printStackTrace(); } return null; } public static Map<String, String> getUserInfo(Context context) { try { //String path = "/data/data/com.example.bhj.myapplication/bhjqq.txt"; File filesDir = context.getFilesDir(); File f = new File(filesDir, "bhjqq.txt"); FileInputStream fis = new FileInputStream(f); //字元流物件 BufferedReader buf = new BufferedReader(new InputStreamReader(fis)); String text = buf.readLine(); if (!TextUtils.isEmpty(text)) { String[] split = text.split("##"); Map<String, String> userInfoMap = new HashMap<String, String>(); userInfoMap.put("number", split[0]); userInfoMap.put("password", split[1]); return userInfoMap; } } catch (Exception e) { e.printStackTrace(); } return null; } }
UtilsOfSDCard
package com.example.bhj.qqlogin;
import android.content.Context;
import android.os.Environment;
import android.text.TextUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
/**
* Created by bhj on 2018/9/8.
*/
public class UtilsOfSDCard {
/**
* 儲存使用者資訊到SD卡
*
* @param number qq號
* @param password 密碼
* @return true 成功
*/
public static boolean saveUserInfo(Context context, String number, String password) {
try {
//判斷有沒sd卡
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state)){
//沒有sd卡
return false;
}
File sdCardFile = Environment.getExternalStorageDirectory();
File f = new File(sdCardFile, "bhjqq.txt");
FileOutputStream fos = new FileOutputStream(f);
//3966554#12154684
String data = number + "##" + password;
fos.write(data.getBytes());
fos.flush();
fos.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 到sd卡獲取使用者資訊
* @param context
* @return
*/
public static Map<String, String> getUserInfo(Context context) {
try {
//判斷有沒sd卡
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state)){
//沒有sd卡
return null;
}
File sdCardFile = Environment.getExternalStorageDirectory();
File f = new File(sdCardFile, "bhjqq.txt");
FileInputStream fis = new FileInputStream(f);
//字元流物件
BufferedReader buf = new BufferedReader(new InputStreamReader(fis));
String text = buf.readLine();
buf.close();
if (!TextUtils.isEmpty(text)) {
String[] split = text.split("##");
Map<String, String> userInfoMap = new HashMap<String, String>();
userInfoMap.put("number", split[0]);
userInfoMap.put("password", split[1]);
return userInfoMap;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
layout檔案 activity_main.xml
<LinearLayout 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"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/et_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="@string/qq_number" />
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="請輸入密碼" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal">
<CheckBox
android:id="@+id/cb_remember_pwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="記住密碼"/>
<CheckBox
android:id="@+id/cb_auto_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/cb_remember_pwd"
android:text="自動登入"/>
</RelativeLayout>
<Button
android:id="@+id/btn_login"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/shape_drawable_2"
android:text="登 錄"/>
</LinearLayout>
drawable檔案 shape_drawable_2.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 設定透明背景色 -->
<solid android:color="#87CEEB"/>
<!-- 設定一個黑色邊框 -->
<stroke android:color="#000000"
android:width="2px"/>
<!-- 設定四個圓角的半徑 -->
<corners android:radius="100px"/>
<!-- 設定一下邊距,讓空間大一點 -->
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
</shape>
原始碼下載地址:
https://github.com/bai390426262/QQLogIn.git
相關文章
- 儲存圖片到SD卡SD卡
- redis儲存使用者登入資訊Redis
- Android儲存(2)– 介面卡儲存Android
- Java介面程式設計實戰(一)——簡易QQ登入介面Java程式設計
- arduino使用SD卡模組以及檢查SD卡資訊UISD卡
- 如何恢復SD卡相機儲存卡等USB裝置資料丟失?SD卡
- Flutter | 超簡單仿微信QQ側滑選單元件Flutter元件
- 簡單實現第三方qq登入和分享
- 儲存卡變為RAW,如何進行儲存卡資料救援
- 小視訊app原始碼,實現簡單的登入介面,輸入賬號密碼APP原始碼密碼
- 結構體資訊寫入SD卡,記憶體不連續結構體SD卡記憶體
- Paramiko SSH登入裝置儲存配置
- QQ使用者登陸介面
- 登入介面:從資料庫中獲取資訊驗證登入(與註冊介面相聯絡)資料庫
- 簡單認識MySQL儲存引擎MySql儲存引擎
- Spring Boot+微信小程式_儲存微信登入者的個人資訊Spring Boot微信小程式
- 【網頁登入】QQ 登入、微信登入、微博登入、GitHub 登入網頁Github
- Flutter系列:2.實現一個簡單的登入介面Flutter
- python+flask 編寫一個簡單的登入介面例子PythonFlask
- python+flask編寫一個簡單的登入介面例子PythonFlask
- -卡牌+動態資訊長按儲存圖片注意點~
- Go操作騰訊雲COS物件儲存的簡單使用案例Go物件
- 如何用python登入qqPython
- Cookie 是什麼?從儲存登入到廣告追蹤的那些事Cookie
- CAS單點登入-簡介
- jmeter介面自動化:登入到新增JMeter
- SD卡資料恢復SD卡資料恢復
- MySQL入門系列:儲存程式(三)之儲存過程簡介MySql儲存過程
- MySQL入門系列:儲存程式(二)之儲存函式簡介MySql儲存函式
- Spark SQL使用簡介(3)--載入和儲存資料SparkSQL
- HDU-安卓程式開發之簡單儲存/內部儲存/外部儲存 & 捉蟲安卓
- 用 hyperf websocket 實現,類似 qq 單機登入功能Web
- [API 寫法] QQ 登入、微信登入、Facebook、google、蘋果登入APIGo蘋果
- 直播app系統原始碼,簡單的登入介面(登入、註冊、記住密碼等按鍵)APP原始碼密碼
- 關於QQ授權登入
- ssh免密登入簡單操作
- [20221012]簡單探究nvarchar2資料型別儲存.txt資料型別
- 容器儲存介面--CSI