Android(安卓)基础:SharePreferences知识总结和在“登录”界面的范例实现
16lz
2021-01-24
知识点:
SharePreferences是一个轻量级的存储类,特别适合用于保存软件配置参数。
使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下。
比如我们使用的桌面软件中,通常会有一个“选项”菜单,选项是对软件的常规或核心设置。
在Android中我们使用SharedPreferences来完成这种对配置文件的读写。
在JavaSE和JavaEE中常用的是*.properties 。
在Windows平台下常使用*.ini文件。
如果想其他应用都能能使用本sharedPreference,可以使用它的路径名来读取文件。
通过SharedPreferences创建的配置文件,不需要指定路径和文件后缀名,读取的时候也是。
通常情况下,配置只是提供给本应用程序使用的。
在这里我们介绍一个小知识点,即其他程序想使用本应用程序的配置,那应该如何使用SharedPreferences呢?
如下:
//构建其他应用的上下文 Context otherAppContext = createPackageContext("com.changcheng.sharedpreferences", Context.CONTEXT_IGNORE_SECURITY); ///可以像使用自己saredPreferenf的文件一样操作 SharedPreferences sharedPreferences = otherAppContext.getSharedPreferences("preferences", Context.MODE_WORLD_READABLE); //注意,为了使其他程序可以访问本应用程序的配置。 //那么在我们使用 getSharedPreferences创建配置的时候必须为它的文件访问模式设置为允许其他程序读取或写入等。
因为 SharedPreferences 背后是使用 xml 文件保存数据.getSharedPreferences(name,mode)方法
第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。
第二个参数指定文件的操作模式,共有四种操作模式,
另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,
这个方法默认使用当前类不带包名的类名作为文件的名称。
如果不通过创建Context访问其他应用的preference,可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
File xmlFile =new File(“/data/data/<package name>/ shared_prefs /itcast.xml”);//<package name> 应替换成应用的包名
登录范例代码:
知识简单,于是只列出两个相关的java
SharedPreferencesWriteActivity:
public class SharedPreferencesWriteActivity extends AppCompatActivity { private Button mLoginBtn; private EditText mUsernameET, mPasswordET; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shared_preferences_write); initViews(); mLoginBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String username = mUsernameET.getText().toString();// 获得用户名 String password = mPasswordET.getText().toString();// 获得密码 // 获得私有类型的SharedPreferences SharedPreferences sp = getSharedPreferences("login", MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit();// 获得Editor对象 editor.putString("username", username);// 增加用户名 editor.putString("password", password);// 增加密码 editor.commit();// 确认提交 Intent intent = new Intent();// 创建Intent对象 // 指定跳转到SharedPreferencesReadActivity intent.setClass(SharedPreferencesWriteActivity.this, SharedPreferencesReadActivity.class); startActivity(intent);// 实现跳转 } }); } private void initViews() { mLoginBtn = (Button) findViewById(R.id.btn_login); mUsernameET = (EditText) findViewById(R.id.et_username); mPasswordET = (EditText) findViewById(R.id.et_password); }}
SharedPreferencesReadActivity:
public class SharedPreferencesReadActivity extends AppCompatActivity { private TextView mUsernameTV,mPasswordTV; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shared_preferences_read); initViews(); SharedPreferences sp = getSharedPreferences("login", MODE_PRIVATE);// 获得私有类型的SharedPreferences String username = sp.getString("username", "mr");// 获得用户名 String password = sp.getString("password", "001");// 获得密码 mUsernameTV.setText("账号:" + username);// 显示用户名 mPasswordTV.setText("密码:" + password);// 显示密码 } private void initViews() { mUsernameTV = (TextView) findViewById(R.id.tv_read_username); mPasswordTV = (TextView) findViewById(R.id.tv_read_password); }}
更多相关文章
- Android极致优化
- Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundErro
- Android(安卓)文件的上传
- android按键静音键功能实现
- 一个关于Android视频流的Github项目
- (转)CrossWalk - android 动态加载so库文件实践
- 个人安卓学习笔记---第一个Android应用程序
- Android开发历程_10(LayoutAnimationController的初步使用)
- Android(安卓)SDK 离线下载安装更新至4.0.3(目前最新)