加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Android开发:借助Shared Preferences实现用户本地登录

发布时间:2021-11-22 14:24:52 所属栏目:教程 来源:互联网
导读:Android中四种数据存储方式, Shared Preferences主要是以键值对的形式来存储数据,他仅仅是轻量级存储机制,主要实现android比较简单参数的设置。这里主要利用其中一种即Shared Preferenced来实现本地用户登录,下面是效果图: 这时我们可以设置用户名和密码

Android中四种数据存储方式, Shared Preferences主要是以键值对的形式来存储数据,他仅仅是轻量级存储机制,主要实现android比较简单参数的设置。这里主要利用其中一种即Shared Preferenced来实现本地用户登录,下面是效果图:
 
 
 
这时我们可以设置用户名和密码。
 
然后,当我们下次在打开软件的时候,即出现下面登录的效果:
 
 
 
点击确定之后我们就可以进入下一层显示。Shared Preference主要是以getPreference()方法获取对象,然后再通过Editor来设置里面键值对形式的参数,最后再通过commit方法来提交保存这些数据,这些数据无法共享,即无法直接在多个程序间共享Preference数据。下面是上面效果的主要源码:
 
public class MainActivity extends Activity {  
  
    private AlertDialog setPrefernAlertDialog;  
    private AlertDialog showPasswordDialog;  
    private  boolean isFirst;  
    //保存数据 专用   
    private SharedPreferences sp;  
    private EditText safenumber;  
    private TelephonyManager tm;  
    private Button  start_button,modify_button;  
    private boolean isStart;  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        sp=this.getSharedPreferences("data",MODE_WORLD_READABLE);    
        //主要以键值对的形式取出   
       isFirst=sp.getBoolean("first", true);  
       //若值没设置 则开始设置密码一类   
       if (isFirst)  
    {  
        showSetPasswordDialog();  
        return;  
    }else {  
          
        showInputPasswordDialog();  
      }  
         
    }  
    public void init()  
    {  
        setContentView(R.layout.activity_main);   
          
    }  
  
      //第一次使用 创建弹出输入密码对话框 属于dialog的基本操作    
      private void showSetPasswordDialog()  
      {  
        AlertDialog.Builder builder=new AlertDialog.Builder(this);  
          //给Dialog设置View 从XML文件转换而来 这是属于基本操作   
         LayoutInflater inflater=LayoutInflater.from(this);   
          View view=    inflater.inflate(R.layout.show_password_dialog,null);  
          final EditText    username =(EditText)view.findViewById(R.id.username);  
          final EditText  userpassword=(EditText)view.findViewById(R.id.password);  
            
            
          Button ok=(Button)view.findViewById(R.id.ok);  
          Button cancle=(Button)view.findViewById(R.id.cancle);  
          //设置动作   
          ok.setOnClickListener(new OnClickListener()  
        {  
              
            @Override  
            public void onClick(View v)  
            {  
                // TODO Auto-generated method stub   
                String name=username.getText().toString();  
                String password=userpassword.getText().toString();  
                //设置密码时 判断两者不能为空   
                if(name.trim().equals("") || password.trim().equals("")) {  
                    Toast.makeText(MainActivity.this, "用户名和密码不能为空", Toast.LENGTH_LONG).show();  
                     return;  
                }  
                //sharedpreferences的基本操作 以键值对的形式保存到data文件中   
                Editor editor=sp.edit();  
                editor.putString("name",name);  
                editor.putString("password",password);  
                editor.putBoolean("first", false);  
                //提交保存到生成的XML文件中   
                editor.commit();  
                setPrefernAlertDialog.dismiss();  
                init();  
                  
            }  
        });  
          cancle.setOnClickListener(new OnClickListener()  
        {  
              
            @Override  
            public void onClick(View v)  
            {  
                // TODO Auto-generated method stub   
                //这里注意要消去 对话框 再finish掉Activity 否则 有bug   
                if (isFirst)  
                {  
                    setPrefernAlertDialog.dismiss();  
                    MainActivity.this.finish();  
                }  
                setPrefernAlertDialog.dismiss();  
                  
            }  
        });  
            
            
        builder.setTitle("请设置密码");  
        builder.setView(view);  
          setPrefernAlertDialog=builder.create();  
          setPrefernAlertDialog.show();  
       
      }  
      /*
       * 当不是第一次操作,即已经设置完密码之后的操作
       */  
           
      public void   showInputPasswordDialog()  
      {  
           AlertDialog.Builder builder = new AlertDialog.Builder(this);  
              
            LayoutInflater inflater = LayoutInflater.from(this);  
            View view = inflater.inflate(R.layout.show_password_dialog, null);  
            final EditText et_username = (EditText) view.findViewById(R.id.username);  
            final EditText et_password = (EditText) view.findViewById(R.id.password);  
              
            Button btn_ok = (Button) view.findViewById(R.id.ok);  
            Button btn_cancle = (Button) view.findViewById(R.id.cancle);  
              
            btn_ok.setOnClickListener(new OnClickListener() {  
  
                public void onClick(View v) {  
                    String name = et_username.getText().toString();  
                    String password = et_password.getText().toString();  
                      
                    if(name.trim().equals("") || password.trim().equals("")) {  
                        Toast.makeText(MainActivity.this, "用户名和密码不能为空", Toast.LENGTH_LONG).show();  
                        return;  
                    }  
                    //获取保存文件中的用户名和密码    
                    String savedUsername = sp.getString("name", "");  
                    String savedPassword = sp.getString("password", "");  
                    //查看输入的密码和名字是否一致    
                    if(name.trim().equals(savedUsername) && password.trim().equals(savedPassword)) {  
                        init();  
                        showPasswordDialog.dismiss();  
                    } else {  
                        Toast.makeText(MainActivity.this, "用户名或者密码错误", Toast.LENGTH_LONG).show();  
                        return;  
                    }  
                      
                }});  
            //下面属于基本的操作    
            btn_cancle.setOnClickListener(new OnClickListener() {  
  
                public void onClick(View v) {  
                    showPasswordDialog.dismiss();  
                    MainActivity.this.finish();  
                      
                }});  
              
            builder.setTitle("输入密码");  
            builder.setView(view);  
            showPasswordDialog = builder.create();  
            showPasswordDialog.show();  
  
      }  
  
}  

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读