Android上如何实现自动登陆功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android上如何实现自动登陆功能?相关的知识,希望对你有一定的参考价值。

如果我的登陆界面有自动登陆的选择框Checkbox,被用户勾选后,那么用户下次登录时,如何越过登录界面直接进入应用功能页面呢?有代码的话帮贴点代码,没有的话给我点逻辑描述也行!谢谢

参考技术A 可以用SharedPreferences存贮你的账户信息,也可以用数据库,这里你随便。思路可以是这样:写一个Welcome界面,在onCreate方法中判断,根据条件来跳转到对应的活动。比如没有设置checked,则启动登录界面LoadActivity;设置了的话,读取配置信息或是数据库中存有的用户名和密码来自动登录,验证成功后跳转到应用功能界面。 参考技术B 第一次用户输入了用户名和密码,并选中了checkbox 自动登录提示框 ,建议你用SharedPreferences将状态存起来,然后注册一个service,在service中判断如果checkbox被选中直接进入你的主界面,否则就进入登录界面 ,希望这个思路对你能起到帮助! 参考技术C 账号密码居然保存在配置文件或数据库???不安全的产品。。。

Android自动登录功能的实现

登陆页面布局设计:

 <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/account" />

        <EditText
            android:id="@+id/edtaccount"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:singleLine="true" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/password" />

        <EditText
            android:id="@+id/edtpassword"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:singleLine="true" />
    </LinearLayout>

    <Button
        android:id="@+id/btnlogin"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="@string/login" />

 注销页面布局设计:

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="@string/注销页面"
        android:textSize="15sp" />

    <Button
        android:id="@+id/btncancel"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="@string/cancel" />

 LoginActivity.java:

package com.xiaoyan.autologin;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LoginActivity extends Activity {

	// 定义组件
	private EditText edtAccount;
	private EditText edtPassword;
	private Button btnLogin;

	// 用于记录帐号和密码
	private String strAccount = "";
	private String strPassword = "";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login_main);

		// 设置标题
		setTitle("Login");

		// 获取sharedpreferences对象
		SharedPreferences share = getSharedPreferences("Login",
				Context.MODE_PRIVATE);
		strAccount = share.getString("Account", "");
		strPassword = share.getString("Password", "");

		// 判断是否是之前有登录过
		if (share == null) {
			init();
		} else {
			// 判断是否刚注销
			if (share.getBoolean("LoginBool", false)) {
				// 跳转到注销页面并销毁当前activity
				Intent intent = new Intent(LoginActivity.this,
						CancelActivity.class);
				startActivity(intent);
				finish();
			} else {

				init();
			}
		}

	}

	private void init() {

		// 初始化组件
		edtAccount = (EditText) findViewById(R.id.edtaccount);
		edtPassword = (EditText) findViewById(R.id.edtpassword);
		btnLogin = (Button) findViewById(R.id.btnlogin);

		edtAccount.setText(strAccount);
		edtPassword.setText(strPassword);
		
		// 监听按钮
		btnLogin.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// 判断帐号和密码是输入是否为空
				if (edtAccount.getText().toString().equals("")
						|| edtPassword.getText().toString().equals("")) {
					Toast.makeText(LoginActivity.this, "帐号或密码不能为空",
							Toast.LENGTH_SHORT).show();
				} else {
					// 创建SharedPreferences对象用于储存帐号和密码,并将其私有化
					SharedPreferences share = getSharedPreferences("Login",
							Context.MODE_PRIVATE);
					// 获取编辑器来存储数据到sharedpreferences中
					Editor editor = share.edit();
					editor.putString("Account", edtAccount.getText().toString());
					editor.putString("Password", edtPassword.getText()
							.toString());
					editor.putBoolean("LoginBool", true);
					// 将数据提交到sharedpreferences中
					editor.commit();

					// 跳转到注销页面并销毁当前activity
					Intent intent = new Intent(LoginActivity.this,
							CancelActivity.class);
					startActivity(intent);
					finish();
				}

			}
		});
	}

}

 CancelActivity.java:

package com.xiaoyan.autologin;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class CancelActivity extends Activity {

	// 定义组件
	private Button btnCancel;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.cancel_activity);

		// 设置标题
		setTitle("Cancel");
		// 初始化页面
		init();

	}

	private void init() {
		// 初始化组件
		btnCancel = (Button) findViewById(R.id.btncancel);

		// 监听注销按钮
		btnCancel.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub

				// 注销帐号并销毁当前页面
				SharedPreferences share = getSharedPreferences("Login",
						Context.MODE_PRIVATE);
				share.edit().putBoolean("LoginBool", false).commit();
				
				Intent intent = new Intent(CancelActivity.this,
						LoginActivity.class);
				startActivity(intent);
				finish();
			}
		});
	}
}

 

以上是关于Android上如何实现自动登陆功能?的主要内容,如果未能解决你的问题,请参考以下文章

android如何实现 登陆以及注册

android如何实现便签上的文字划掉功能

Android自动登录功能的实现

如何利用android手机远程控制另一个android手机

c#添加webBrowser控件,如何实现自动填写打开的网页中的登录帐号,密码,并且自动登陆?

如何实现android应用的自动更新?