Ⅰ 安卓用sharepreferences怎麼實現婧投寥dittext編輯內容
android 平台給我們提供了一個SharedPreferences類,它是一個輕量級的存儲類,特別適合用於保存軟體配置參數。使用 SharedPreferences保存數據,其背後是用xml文件存放數據,文件存放在/data/data/<package name>/shared_prefs目錄下:
SharedPreferences sharedPreferences = getSharedPreferences("ljq", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();//獲取編輯器
editor.putString("name", "林計欽");
editor.putInt("age", 24);
editor.commit();//提交修改
生成的ljq.xml文件內容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">林計欽</string>
<int name="age" value="24" />
</map>
因為SharedPreferences背後是使用xml文件保存數據,getSharedPreferences(name,mode)方法的第一個參數用於指定該文件的名稱,名稱不用帶後綴,後綴會由Android自動加上。方法的第二個參數指定文件的操作模式,共有四種操作模式,這四種模式前面介紹使用文件方式保存數據時已經講解過。如果希望SharedPreferences背後使用的xml文件能被其他應用讀和寫,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE許可權。
另外Activity還提供了另一個getPreferences(mode)方法操作SharedPreferences,這個方法默認使用當前類不帶包名的類名作為文件的名稱。
訪問SharedPreferences中的數據
訪問SharedPreferences中的數據代碼如下:
SharedPreferences sharedPreferences = getSharedPreferences("ljq", 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.ljq.action的應用使用下面語句創建了preference。
getSharedPreferences("ljq", Context.MODE_WORLD_READABLE);
其他應用要訪問上面應用的preference,首先需要創建上面應用的Context,然後通過Context 訪問preference ,訪問preference時會在應用所在包下的shared_prefs目錄找到preference :
Context otherAppsContext = createPackageContext("com.ljq.action", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("ljq", 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/itcast.xml");//<package name>應替換成應用的包名
Ⅱ 2.3 的 SharePreference 文件存在什麼位置
SharePreference是一種輕量級的數據存儲方式。內部實現是基於XML的Key-Value方式完成的。通常用來存儲程序的配置信息。
今天寫了一個小Demo,用SharePreference來保存用戶的用戶名和登錄密碼,這里只是簡單的存儲,並沒有做加密處理。實際應用時記得加密。
定義SharePreference的四個步驟:
1、通過getSharePreference(key,mode) 獲得對象
2、利用ShareLPreference的editor()方法來獲取editor對象
3、利用editor的putString()方法將鍵值對數據存儲進去
4、利用editor的commit()方法將數據提交到SharePreference內
舉個例子:
1
privatebooleansaveData(){
2
SharedPreferences preference = getSharedPreferences("user", Context.MODE_PRIVATE);
3
Editor edit = preference.edit();
4
<span style="white-space:pre">< /span>edit.putString("userName", loginUserName.getText().toString().trim());
5
<span style="white-space:pre">< /span>edit.putString("password", loginPassword.getText().toString().trim());
6
<span style="white-space:pre">< /span>edit.commit();
7
<span style="white-space:pre">< /span>returntrue;
8
}
這個例子中創建了一個名為user的SharePreference對象,在內部的文件存儲名為user.xml
調用SharePreference的幾個步驟:
1、通過getSharePreference方法獲得SharePreference對象
2、使用對象的getString(key, default value)方式來獲得SharePreference中的數據
這里需要注意的是,當SharePreference中沒有這個key對應的value的時候,它也不會報錯,會返回一個none,所以,建議事先定義一個default value值,方便調試。
舉個例子:
1
SharedPreferences preference = getSharedPreferences("user", Context.MODE_PRIVATE);
2
String userName = preference.getString("userName", "").trim();
3
String password = preference.getString("password", "").trim();
刪除SharePreference的方法:
當使用周期結束,選擇將數據對象刪除時,是刪除的整一個文件,注意數據存儲的位置在data/data/package.name下,所以刪除的操作如下:
1
File file= newFile("/data/data/"+getPackageName().toString()+"/shared_prefs","user.xml");
2
if(file.exists()){
3
file.delete();
4
}
注意new File(path, file name) 前一個參數是文件路徑,後一個參數是文件名。在前面已經說過,之前我們創建的SharePreference 對象的名稱是user.xml
Ⅲ 如何給區域網內的共享文件夾加密
打開「我的電腦」,點擊「工具」菜單,選擇「文件夾選項」命令:在打開的「文件夾選項」對話框中,單擊「查看」選項卡:取消「使用簡單共享(推薦)」前的復選框,最後單擊確定按鈕即可。 接下來我們給共享的目錄分配一個共享帳號。在「本地用戶和組」中新建一用戶「shareuser,注意這個帳號密碼不能為空,同時不要去改這個帳號的許可權,用默認的普通組user的許可權即可:然後就是設置安全的共享了。右擊需要共享的文件夾,選擇「共享和安全」命令:在打開的「屬性」對話框中選擇「共享」選項卡,再單擊「共享此文件夾」單選項,接著單擊下面的「許可權」按鈕:在彈出的「許可權」對話框中刪除已有的「everyone」用戶,添加剛剛設置的「shareuser」帳號:最後單擊「確定」按鈕保存設置即可。以後,任何人能看到這個共享文件夾,但打開則需要密碼。 希望能幫到你 謝謝
Ⅳ 我在SharedPreferences裡面保存的明文密碼安全么
就算用md5或者sha加密了,通過讀取xml文件。也可以得到我加密過的字元串,然後再反編譯我的代碼,就知道我如何組織的密碼格式,然後就可以窮舉,看哪種組合跟存在xml文件中的字元串相同,就是密碼了,我想是不是可以用NDK,把密碼的組織方法封裝在.so中,應該不會被反編譯吧,不知道這個想法可不可以。因為這次的項目,要求軟體密碼一定不能被破解,不然後果很嚴重。
Ⅳ 怎麼可以把sqlite資料庫和sharedpreferences文件加密
你可以使用超級加密3000試試。
超級加密3000採用國際上成熟的加密演算法和安全快速的加密方法,可以有效保障數據安全!
具體操作方法:
1下載安裝超級加密3000。
2 然後在需要加密的文件上單擊滑鼠右鍵選擇加密。
3 在彈出的文件加密窗口中設置文件加密密碼就OK了。
超級加密3000的下載地址你可以在網路上搜索超級加密3000,第一個就是。
Ⅵ 安卓sharepreference能跨進程共享數據嗎
使用的SharePreferences
都是使用模式Context.MODE_PRIVATE,這樣就不能被其他程序訪問到,用不同的模式可以實現跨進程,跨應用獲取該文件內容
String content = null;
Context c = null;
try {
c = this.createPackageContext(PREFERENCE_PACKAGE,
Context.CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d(TAG, "" + c);
SharedPreferences sh = c.getSharedPreferences(PREFERENCE_NAME, Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
content = sh.getString("tr069token3", null);
在Android 4.0上通過以上方法可以跨進程訪問,之前沒有加入Context.MODE_MULTI_PROCESS參數,導致不能獲取到修改後的數據。在2.3的室內機上不能獲取,沒有許可權。
Ⅶ SharePreference 的寫入和讀取已經有所了解了,但具體操作上還存在不少問題,望耐心往下看,期待你的指導
{
privateButtonbt;
privatebooleanwrite=true;
privateTestHandlerhandler;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
handler=newTestHandler();
setContentView(R.layout.activity_test);
bt=(Button)findViewById(R.id.bt);
bt.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
if(write){
handler.sendEmptyMessage(2);
}else{
handler.sendEmptyMessage(1);
}
write=!write;
if(write){
bt.setText("Write");
}else{
bt.setText("Read");
}
}
});
}
publicStringread(StringfromTarghet,Stringkeys){
Stringres="";
SharedPreferencespreference=getSharedPreferences(fromTarghet,Context.MODE_PRIVATE);
res=preference.getString(keys,"#A1F1807F08");
Log.i("Test","readkey"+keys+",value:"+res);
returnres;
}
publicvoidwrite(Stringtotarget,Stringss){
Log.i("Test","writetarget"+totarget+"keymp1,value:"+ss);
SharedPreferencespreference=getSharedPreferences(totarget,Context.MODE_PRIVATE);
Editoreditor=preference.edit();
editor.putString("mp1",ss);
editor.commit();
}
{
@Override
publicvoidhandleMessage(Messagemsg){
//TODOAuto-generatedmethodstub
switch(msg.what){
case1:
read("Test","mp2");
break;
case2:
write("Test","writetest.");
break;
default:
break;
}
}
}
}
當case1裡面的參數是mp1,即write方法中editor寫入的preference時,點擊按鈕write後再點擊read的log如下:
01-0116:26:49.104:I/Test(15122):writetargetTestkeymp1,value:writetest.
01-0116:26:53.614:I/Test(15122):readkeymp1,value:writetest.
此時讀取出來的值就是你寫入的值。
如果修改為mp2,同樣的操作,log如下:
01-0116:27:40.424:I/Test(15289):writetargetTestkeymp1,value:writetest.
01-0116:27:42.404:I/Test(15289):readkeymp2,value:#A1F1807F08
read出來的值就是默認值。
我這樣寫在運行的時候沒有問題,也沒有報錯,你說的估計是你在線程中調用的時候需要方法是static的,這和SharedPreference沒有關系。只要是你的方案設計。
Ⅷ 如何用android sharedpreferences鍸ist集合
需要加密的,sharedperfreference在Root的手機里可以直接adbpull下來看,里邊其實就是個xml,存儲的明文,存用戶名密碼自己加下密吧。用戶可以在設置--應用管理里清除數據來清除sharedpreferences.
Ⅸ 關於android開發的sharePreferences讀取問題
你那個應該只是交你讀取的方法吧,代碼右邊不是有個代碼語言嗎,選一下就可以了,我下面的代碼是包含了保存和讀取
java">publicbooleanondrain_flag=true;
publicbooleanflag=true;
publicintheated=0;
publicStringmac="";
privateConfiguration(){
}
/**
*單態
*/
(){
if(instance==null){
instance=newConfiguration();
}
returninstance;
}
/**
*儲存配置文件信息
*
*@paramcontext
*上下文
*/
publicvoidsaveMe(Contextcontext){
SharedPreferencespreferences=context.getSharedPreferences(
SETTING_INFOS,Context.MODE_PRIVATE);
EditorpreferencesEditor=preferences.edit();
preferencesEditor.putBoolean("flag",flag);
preferencesEditor.putInt("heated",heated);
preferencesEditor.putString("mac",mac);
preferencesEditor.commit();
}
/**
*獲取配置文件信息
*
*@paramcontext
*上下文
*/
publicvoidreadMe(Contextcontext){
SharedPreferencespreferences=context.getSharedPreferences(
SETTING_INFOS,Context.MODE_PRIVATE);
flag=preferences.getBoolean("flag",flag);
heated=preferences.getInt("heatede",
heated);
mac=preferences.getString("mac",mac);
}
Ⅹ 請詳細的講一下ordinary share 與 preference share的區別和特點
ordinary share的dividends隨著公司的業績波動,而preference share的dividends是固定的。即使公司業績下滑或虧損,股份持有者依然可以拿錢,但是一般不參與分紅。簡單的說,os收益也許能比ps高,但是,風險更大。