2014-10-19 55 views
1

我想在Android应用程序中创建注册页面,其中需要添加用户名和密码字段。 诀窍是,也有一个复选框,如果选择了复选框,那么应用程序 应该记住密码! ,对于给定的用户名在Android应用程序中记住注册页面的密码

有人可以帮我吗?

+0

使用'SharedPreferences'查看详情请查看http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/ – Rustam 2014-10-19 15:41:59

+0

爵士乐队真的会受到欢迎。 – Elltz 2015-05-21 18:48:09

回答

0

创建你的注册页面,并将名称和密码保存在共享首选项中,由putString("key","value") ..并添加一个复选框,当用户单击注册按钮时,检查是否checkbox.isChecked() ..如果选中它,应该返回true并把太在sharedpreference使用putBoolean("key","value") ..而且只要登录活动开始检查使用getBoolean("key","value")布尔值。如果真自动登录..

编辑1:

注册屏幕

EditText name, password; 
CheckBox cb; 
Button b; 
SharedPreferences sp; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    name = (EditText) findViewById(R.id.editText1); 
    password = (EditText) findViewById(R.id.editText2); 
    cb = (CheckBox) findViewById(R.id.checkBox1); 
    b = (Button) findViewById(R.id.button1); 
    sp = getSharedPreferences("auth", 0); 
    b.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      Editor e = sp.edit(); 
      e.putString("auth_name", name.getText().toString()); 
      e.putString("auth_pass", password.getText().toString()); 
      e.putBoolean("auth_status", cb.isChecked()); 
      e.commit(); 
     } 
    }); 
} 

登录活动

EditText name, password; 
Button b; 
SharedPreferences sp; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    name = (EditText) findViewById(R.id.editText1); 
    password = (EditText) findViewById(R.id.editText2); 
    b = (Button) findViewById(R.id.button1); 
    sp = getSharedPreferences("auth", 0); 

    if(sp.getBoolean("auth_status", false)){ // the false stands for default value 
     name.setText(sp.getString("auth_name", "elltz")); //default vaule is elltz 
     password.setText(sp.getString("auth_pass", "elltz")); //default vaule is elltz 
    } 

    b.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // Log user in when he/she clicks 

     } 
    }); 
} 

,这里是同时用于注册和登录

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:ems="10" > 

    <requestFocus /> 
</EditText> 

<EditText 
    android:id="@+id/editText2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/editText1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="23dp" 
    android:ems="10" 
    android:inputType="textPassword" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText1" 
    android:layout_below="@+id/editText2" 
    android:layout_marginTop="30dp" 
    android:text="Button" /> 

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/button1" 
    android:layout_alignRight="@+id/editText1" 
    android:text="remember " /> 
</RelativeLayout> 

这是它的XML代码..相同..所以复制粘贴,看看它是否工作

+0

你能告诉我如何做到这一点,我无法确定怎么做?请 – 2014-10-20 13:18:07

+0

对不起,我花了5分钟@ AkshaySharma – Elltz 2014-10-20 21:07:26

+0

@elitz Thankyou – 2014-10-21 15:08:33

0

使用共享任务的首选项。当选中复选框时,将其保存到适当的共享前缀。当它不清楚它。

例如:

当复选框被选中,加载你的用户名和密码共享优先。但是,如果没有检查,请不要加载(或者可能会清除它)

0

请小心使用共享首选项,它是星期点,并且可以通过简单的设备生根来破解。 查看更多信息:

在Android 4.3+中有一种叫做AndoridKeystore的东西,它大致相当于iOS key chain。这里有一篇很好的博客和官方API示例项目。

一般情况下,如果您使用 Context.MODE_PRIVATE创建共享首选项,它们只能由您的应用程序访问(或由您的密钥签名的其他应用程序 )。但是,如果设备根深蒂固,那么用户和任何应用都可能会读取您应用的私有共享 首选项。

我帮助创建和维护一个名为secure-喜好 模糊处理键和值存储在共享的喜好 库使其更难攻击者,并要求再进行逆向工程的 应用程序(虽然这不是火箭科学)。对于 安全首选项的一个很好的选择是Mark Murphy的CWAC-prefs,它支持 SQLcipher。

摘自here

相关问题