QQ登录
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itheima28.qqlogin"android:versionCode="1"android:versionName="1.0" ><uses-sdk android:minSdkVersion="8"android:targetSdkVersion="17" /> <!-- 寫入sd卡的權限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><application android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activity android:name="com.itheima28.qqlogin.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>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"android:orientation="vertical"tools:context=".MainActivity" ><EditText android:id="@+id/et_number"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="請輸入QQ號" /><EditText android:id="@+id/et_password"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="請輸入密碼"android:inputType="textPassword" /><CheckBox android:id="@+id/cb_remerber_pwd"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:text="記住密碼" /><Button android:id="@+id/btn_login"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登錄" /></LinearLayout>src/kdw/qqlogin/MainActivity.java
package com.itheima28.qqlogin;import java.util.Map;import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast;import com.itheima28.qqlogin.utils.Utils; import com.itheima28.qqlogin.utils.UtilsOfSharedPreferences;public class MainActivity extends Activity implements OnClickListener {private static final String TAG = "MainActivity";private EditText etNumber;private EditText etPassword;private CheckBox cbRemerberPWD;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);etNumber = (EditText) findViewById(R.id.et_number);etPassword = (EditText) findViewById(R.id.et_password);cbRemerberPWD = (CheckBox) findViewById(R.id.cb_remerber_pwd);Button btnLogin = (Button) findViewById(R.id.btn_login);btnLogin.setOnClickListener(this);// 回顯數據Map<String, String> userInfoMap = UtilsOfSharedPreferences.getUserInfo(this);if(userInfoMap != null) {etNumber.setText(userInfoMap.get("number"));etPassword.setText(userInfoMap.get("password"));}}@Overridepublic 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(cbRemerberPWD.isChecked()) {// 當前需要記住密碼Log.i(TAG, "記住密碼: " + number + ", " + password);boolean isSuccess = UtilsOfSharedPreferences.saveUserInfo(this, number, password);if(isSuccess) {Toast.makeText(this, "保存成功", 0).show();} else {Toast.makeText(this, "保存失敗", 0).show();}}// 3. 登陸成功Toast.makeText(this, "登錄成功", 0).show();} }src\com\itheima28\qqlogin\Utils.java
package com.itheima28.qqlogin.utils;import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map;import android.content.Context; import android.text.TextUtils;public class Utils {/*** 保存用戶信息* @param number* @param password* @return true 成功*/public static boolean saveUserInfo(String number, String password) {try {String path = "/data/data/com.itheima28.qqlogin/itheima28.txt";FileOutputStream fos = new FileOutputStream(path);// 307966990##123123String data = number + "##" + password;fos.write(data.getBytes());fos.flush();fos.close();return true;} catch (Exception e) {e.printStackTrace();}return false;}/*** 保存用戶信息* @param number* @param password* @return true 成功*/public static boolean saveUserInfo(Context context, String number, String password) {try { // String path = "/data/data/com.itheima28.qqlogin/itheima28.txt";// File filesDir = context.getFilesDir();File filesDir = context.getCacheDir();File f = new File(filesDir, "itheima28.txt");FileOutputStream fos = new FileOutputStream(f);// 307966990##123123String data = number + "##" + password;fos.write(data.getBytes());fos.flush();fos.close();return true;} catch (Exception e) {e.printStackTrace();}return false;}/*** 返回用戶信息* @return*/public static Map<String, String> getUserInfo() {try {String path = "/data/data/com.itheima28.qqlogin/itheima28.txt";FileInputStream fis = new FileInputStream(path);// 字符流對象BufferedReader reader = new BufferedReader(new InputStreamReader(fis));// 307966990##123123String text = reader.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;}/*** 返回用戶信息* @return*/public static Map<String, String> getUserInfo(Context context) {try { // String path = "/data/data/com.itheima28.qqlogin/itheima28.txt";// File filesDir = context.getFilesDir();File filesDir = context.getCacheDir();File f = new File(filesDir, "itheima28.txt");FileInputStream fis = new FileInputStream(f);// 字符流對象BufferedReader reader = new BufferedReader(new InputStreamReader(fis));// 307966990##123123String text = reader.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;} }src\com\itheima28\qqlogin\UtilsOfSDCard.java
package com.itheima28.qqlogin.utils;import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map;import android.content.Context; import android.os.Environment; import android.text.TextUtils;public class UtilsOfSDCard {/*** 保存用戶信息到sd卡* @param number* @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 file = new File(sdCardFile, "itheima28.txt");FileOutputStream fos = new FileOutputStream(file);String data = number + "##" + password;fos.write(data.getBytes());fos.flush();fos.close();return true;} catch (Exception e) {e.printStackTrace();}return false;}/*** 到sd卡獲取用戶信息* @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 file = new File(sdCardFile, "itheima28.txt");BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));String text = br.readLine();br.close();if(!TextUtils.isEmpty(text)) {Map<String, String> userInfoMap = new HashMap<String, String>();String[] split = text.split("##");userInfoMap.put("number", split[0]);userInfoMap.put("password", split[1]);return userInfoMap;}} catch (Exception e) {e.printStackTrace();}return null;} }src\com\itheima28\qqlogin\UtilsOfSharedPreferences.java
package com.itheima28.qqlogin.utils;import java.util.HashMap; import java.util.Map;import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.text.TextUtils;public class UtilsOfSharedPreferences {/*** 保存用戶信息到sd卡* @param number* @param password* @return true 成功*/public static boolean saveUserInfo(Context context, String number, String password) {try {// /data/data/包名/shared_prefs/itheima28SharedPreferences sp = context.getSharedPreferences("itheima28", Context.MODE_PRIVATE);// 獲得一個編輯對象Editor edit = sp.edit();// 存數據edit.putString("number", number);edit.putString("password", password);// 提交, 數據真正存儲起來了.edit.commit();return true;} catch (Exception e) {e.printStackTrace();}return false;}/*** 到sd卡獲取用戶信息* @return*/public static Map<String, String> getUserInfo(Context context) {SharedPreferences sp = context.getSharedPreferences("itheima28", Context.MODE_PRIVATE);String number = sp.getString("number", null);String password = sp.getString("password", null);if(!TextUtils.isEmpty(number) && !TextUtils.isEmpty(password)) {Map<String, String> userInfoMap = new HashMap<String, String>();userInfoMap.put("number", number);userInfoMap.put("password", password);return userInfoMap;}return null;} }總結
- 上一篇: i.MX6 交叉编译zlib、yasm、
- 下一篇: (私人收藏)配色宝典