今天学习了android数据存储中的SharedPreferences,记录如下:
SharedPreference是一种轻型的数据存储方式,实际上是基于XML文件存储的“key-value”键值对数据。通常用来存储程序的一些配置信息,如音量、是否更新等。其存储在
“data/data/程序包名/shared_prefs目录下。
SharedPreference本身只能获取数据,不支持存储和修改。存储和修改要通过Editor对象来实现。
package com.example.shujucunchu;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private SharedPreferences sharedPreferences;
private SharedPreferences publicSharedPreferences;
private Editor editor;
private Context context;
private EditText sharedPreferences_key_et;
private EditText sharedPreferences_value_et;
private Button sharedPreferences_save_btn;
private Button public_sharedPreferences_save_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initCmp();
initCmpData();
}
public void initData(){
context = getApplicationContext();
/***data/data/<package name>/shared_prefs***/
/**
Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。
Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写。
Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读,写*/
sharedPreferences = context.getSharedPreferences("user-config", Context.MODE_PRIVATE);
publicSharedPreferences = context.getSharedPreferences("public-user-config", Context.MODE_WORLD_WRITEABLE);
/**
读写其他应用的SharedPreferences:
* ******/
try {
Context pvCount = createPackageContext("com.tony.app", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences read = pvCount.getSharedPreferences("lock", Context.MODE_WORLD_READABLE);
} catch (NameNotFoundException e) {
e.printStackTrace();
}//这里的com.tony.app就是其他程序的包名
}
public void initCmp(){
sharedPreferences_key_et = (EditText) findViewById(R.id.sharedPreferences_key_et);
sharedPreferences_value_et = (EditText) findViewById(R.id.sharedPreferences_value_et);
sharedPreferences_save_btn = (Button) findViewById(R.id.sharedPreferences_save_btn);
sharedPreferences_save_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editor = sharedPreferences.edit();
String key = sharedPreferences_key_et.getText().toString();
String value = sharedPreferences_value_et.getText().toString();
editor.putString(key, value);
editor.commit();
}
});
public_sharedPreferences_save_btn = (Button) findViewById(R.id.public_sharedPreferences_save_btn);
public_sharedPreferences_save_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editor = publicSharedPreferences.edit();
String key = sharedPreferences_key_et.getText().toString();
String value = sharedPreferences_value_et.getText().toString();
editor.putString(key, value);
editor.commit();
}
});
}
public void initCmpData(){
}
}