編輯:關於Android編程
本系列文章由@林泓成出品,轉載請注明出處。
根據上篇博客講的SharedPreferences的簡單實現,我們來實現下QQ登陸的時候用戶名自動顯示以及勾選是否記憶用戶名和隱身登陸的功能,通過實例來展現SharedPreferences的實用性。
相關代碼如下:
package com.example.f15_sharedpreferences01;
import java.util.HashMap;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
public class MainActivity extends Activity {
private Button button;
private CheckBox checkBox,checkBox2;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) this.findViewById(R.id.button1);
checkBox=(CheckBox)this.findViewById(R.id.checkBox1);
checkBox2=(CheckBox)this.findViewById(R.id.checkBox2);
editText=(EditText)this.findViewById(R.id.editText1);
Map map=getMsg("login");
if(map!=null&&!map.isEmpty()){
if(map.get("username").toString()!=null&&!map.get("username").toString().equals("")){
editText.setText(map.get("username").toString());
}
checkBox.setChecked( (Boolean) map.get("isname"));
checkBox2.setChecked( (Boolean) map.get("ispwd"));
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
HashMap map=new HashMap();
if(editText.getText().toString().trim().equals("admin")){
if(checkBox.isChecked()){
map.put("username",editText.getText().toString().trim() );
}else{
map.put("username","" );
}
map.put("isname", checkBox.isChecked());
map.put("ispwd", checkBox2.isChecked());
saveMsg("login", map);
}
}
});
}
//寫入數據
public boolean saveMsg(String fileName, Map map) {
boolean flag = false;
// 一般Mode都使用private,比較安全
SharedPreferences preferences = getSharedPreferences(fileName,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
// Map類提供了一個稱為entrySet()的方法,這個方法返回一個Map.Entry實例化後的對象集。
// 接著,Map.Entry類提供了一個getKey()方法和一個getValue()方法,
// 因此,上面的代碼可以被組織得更符合邏輯
for (Map.Entry entry : map.entrySet()) {
String key = entry.getKey();
Object object = entry.getValue();
// 根據值得不同類型,添加
if (object instanceof Boolean) {
Boolean new_name = (Boolean) object;
editor.putBoolean(key, new_name);
} else if (object instanceof Integer) {
Integer integer = (Integer) object;
editor.putInt(key, integer);
} else if (object instanceof Float) {
Float f = (Float) object;
editor.putFloat(key, f);
} else if (object instanceof Long) {
Long l = (Long) object;
editor.putLong(key, l);
} else if (object instanceof String) {
String s = (String) object;
editor.putString(key, s);
}
}
flag = editor.commit();
return flag;
}
//讀取數據
public Map getMsg(String fileName) {
Map map = null;
//讀取數據用不到edit
SharedPreferences preferences = getSharedPreferences(fileName,
Context.MODE_PRIVATE);
map = preferences.getAll();
return map;
}
}
Android掛斷電話以及Java Class Loader
Android中,要自己實現一個掛斷電話方法時,很久之前可以endCall().不過現在已經不行了,要應用反射機制,獲取到"android.os.Service
android開發筆記之網絡編程—使用HTTP進行網絡編程
上次我們講到了使用URLConnection的網絡編程,URLConnection已經可以非常方便地與指定站點交換信息,URLConnection下還有一個子類:Http
ART世界探險(13) - 初入dex2oat
dex2oat流程分析進入整個流程之前,我們先看一下地圖,大致熟悉一下我們下一步要去哪裡:主函數dex2oat的main函數,直接是dex2oat工廠函數的封裝。int
android設備終端與藍牙模塊(HC-06)的通訊編程思路
藍牙模塊(HC-06): private BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter