• andoird 系统之SharedPreferences(配置文件)操作


    在windows 系统下,我们的配置文件通常使用ini 做为配置文件。如my.sql 数据库有my.ini ,我们通常要修改my.ini 的里的字符集编码。

    而JAVA工程我们通常使用properties 文件编写配置文件,这样做的目的是对容易变更的文件好修改,不需要重新编译。

    android 项目(系统)同要提供了这样的功能,SharedPreferences 用来给系统填加配置。

    实现代码如下:

    	    // 给系统添加配置文件
    		SharedPreferences sharedPreferences = getSharedPreferences("soliu", Context.MODE_PRIVATE);
    		// 编辑配置
    		Editor editor = sharedPreferences.edit();//获取编辑器
    		editor.putString("name", "my name is mr 刘");
    		editor.putInt("age", 24);
    		editor.commit();//提交修改
    		//获取配置内容
    		String name = sharedPreferences.getString("name","");
    		Integer age = sharedPreferences.getInt("age", 1);
    		Log.i("name", name);
    		Log.i("age",age.toString());

    注:sharedPreferences.getKey(); 通过key获取value,如果没有取到值也不会抛异常,会返回后边的默认值


    		最终参数结果
    		<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    		<map>
    		<string name="name">my name is mr 刘</string>
    		<int name="age" value="24" />
    		</map>

    方法: getSharedPreferences("soliu", Context.MODE_PRIVATE);

    第一个参数是是配置文件的名称,第二个参数是创建方式,默认在私有目录下。在\data\data\<package.name>\shared_prefs\soliu.xml

    sharePreferences.getString("name","defaultValue")

    第一个参数是是配置文件的key,第二个参数是默认值。

    第二个常用参数。

    Context.MODE_PRIVATE .指它该sharedPreferences 只能被本应用程一刹那读、写。

    Context.MODE_WORLD_READABLE.指它该sharedPreferences 可以被其他应用程一刹那读。

    Context.MODE_WORLD_WRITEABLE.指它该sharedPreferences 可以被其他应用程一刹那读、写。

    图:


    如果其他应程序想获取这本程序的sharedPreferences的值。
    需要按又下须序操作
     第一步:需要创建其他程序对应的Context.代码如下。

        Context context = CreatePackageContext("com.hkrt.action",Context.CONTEXT_IGNORE_SECURITY);
        Sharedferences sf= context.getSharedPreferences("name",Context.MODE_WORLD_READABLE);
        String name = sf.getString("name",default);

    具体在项目中的应用:

    现在项目中有这个的需求,让用户登陆可以进记用户名和密码,就是当用户点击记录密码登陆时,下次有户再进来此项目就不需要再输入用户名和密码,


    下面我们来处理登陆记录密码。我们使用 sharedPreferences 来保存用户名和密码,(当然,密码可以进行加密这里就不处理了)。

    具体实现如下:

    package com.hkrt.activity;
    
    import android.app.Activity;
    import android.content.Context;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.CheckBox;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.Toast;
    
    import com.hkrt.R;
    
    public class LoginUserActivity extends Activity {
       private EditText userNameEdit,PasswrodEdit;
       private CheckBox checkPwd;
       private ImageButton login;
       private   SharedPreferences sharedPreferences ;
        
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.login_user_activity);
    		userNameEdit = (EditText)this.findViewById(R.id.username_edit);
    		PasswrodEdit = (EditText)this.findViewById(R.id.password_edit);
    		checkPwd = (CheckBox)this.findViewById(R.id.checkPwd);
    		login = (ImageButton)this.findViewById(R.id.login);
    		
    		sharedPreferences= getSharedPreferences("login", Context.MODE_PRIVATE);
    		final Editor editor = sharedPreferences.edit();//获取编辑器  
    		
    		login.setOnClickListener(new OnClickListener() {
    	
    			@Override
    			public void onClick(View v) {
    				if(checkPwd.isChecked()){
    					// 编辑配置  
    					editor.putString("name",userNameEdit.getText().toString());  
    					editor.putString("pwd", PasswrodEdit.getText().toString());  
    					editor.commit();//提交修改  
    				}else{
    					editor.putString("name",null);  
    					editor.putString("pwd", null);  
    					editor.commit();//提交修改  
    				}
    				Toast.makeText(LoginUserActivity.this, "登陆成功", 0).show();
    			}
    		});
    		String userName = 	sharedPreferences.getString("name","");
    		String pwd = 	sharedPreferences.getString("pwd","");
    		userNameEdit.setText(userName);
    		PasswrodEdit.setText(pwd);
    		if(userName!=null && !userName.equals("")){
    			checkPwd.setChecked(true);
    		}
    		
    		
    	}
    
    }
    



  • 相关阅读:
    wireshark抓包 TCP 字段详解
    youget使用教程
    JavaScript操作Oracle数据库
    WinForm导出文件,你懂的……
    Docker数据存储原理
    Dockerfile之CMD与ENTRYPOINT使用要点
    DevOps实战(Docker+Jenkins+Git)
    Python和Django web开发工具pycharm介绍
    连出两次
    python2.7发邮件小程序
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218359.html
Copyright © 2020-2023  润新知