訪問SharedPreferences中的數據代碼以下:
SharedPreferences sharedPreferences = getSharedPreferences("zyj", Context.MODE_PRIVATE);
//getString()第二個參數爲缺省值,若是
preference中不存在該
key,將返回缺省值
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 1);
若是訪問其餘應用中的Preference,
前提條件是:
該preference建立時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE權限。如:有個<package
name>爲
com.jbridge.pres.activity的應用使用下面語句建立了
preference。
getSharedPreferences("zyj", Context.
MODE_WORLD_READABLE);
其餘應用要訪問上面應用的
preference,首先須要建立上面應用的
Context,而後經過
Context 訪問preference ,訪問preference時會在應用所在包下的
shared_prefs目錄找到
preference :
Context otherAppsContext = createPackageContext("com.jbridge.pres.activity", Context.
CONTEXT_IGNORE_SECURITY
);
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("zyj",
Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 0);
若是不經過建立
Context訪問其餘應用的
preference,能夠以讀取xml文件方式直接訪問其餘應用
preference對應的
xml文件,如:
File xmlFile = new File(「/data/data/<package name>/shared_prefs/zyj.xml」);//<package name>應替換成應用的包名
工程中的例子
private void fillUsernameAndPassword() {
String username = sp.getString("上次登陸", "");
<string name="上次登陸">....
</string>
<string name="上次登陸">....
</string>
if (!username.equals("")) {
String password = sp.getString(username, "");
<string name="某個用戶名">密碼
</string>
etLoginname.setText(username);
etPassword.setText(password);
}
}