編輯:關於android開發
先把要攔截的電話號碼保存到數據庫中,攔截模式用個字段區分,1 電話攔截,2 短信攔截,3全部攔截
新建Activity類CallSmsSafeActivity.java
新建布局文件activity_call_sms_safe.xml
列表展示所有的黑名單手機號碼
在布局文件中添加<ListView>控件,定義一個id
獲取ListView對象
調用ListView對象的setAdapter()方法,參數:ListAdapter對象
定義內部類CallSmsSafeAdapter繼承系統的BaseAdapter
實現四個方法,重要的有兩個getCount()和getView()
實現getCount()方法,返回集合的長度
實現getView()方法
調用View.inflate()方法,轉換布局文件為View對象,參數:上下文,布局資源,null
查找到相應的控件,設置文件
數據庫操作
在db包下新建一個BlackNumberDBOpenHelper類繼承SQLiteOpenHelper類
實現構造方法
調用父類的構造方法,super(),參數:上下文,數據庫名稱,游標工廠(null),版本號(1)
重寫onCreate()方法,傳遞進來參數SQLiteDatabase對象
調用SQLiteDatabase對象的execSQL()方法,參數:String的sql語句(例如:create table blacknumber (id integer primary key autoincrement,phone varchar(20) ,mode varchar(2)) )
重寫onUpgrade()方法
dao類
在db.dao包下新建一個BlackNumberDao類
定義構造方法,傳遞進來參數:Context對象
獲取BlackNumberDBOpenHelper對象,參數:Context對象
查詢單條
定義方法find(),查詢一條記錄,參數:String類型電話號碼
調用helper對象的getReadableDatabase()方法,獲取到SQLiteDatabase對象
調用SQLiteDatabase對象的rawQuery()方法,獲取到Cursor對象,參數:String類型SQL語句,String[]參數值數組
調用Cursor對象的moveToNext()方法,如果為真,說明有數據,
調用Cursor對象的getString()方法,獲取到值,參數:字段索引
返回Map集合
查詢全部
定義方法findAll(),查詢全部數據
調用helper對象的getReadableDatabase()方法,獲取到SQLiteDatabase對象
調用SQLiteDatabase對象的rawQuery()方法,獲取到Cursor對象,參數:String類型SQL語句
新建一個domain包,新建一個業務bean,BlackNumberInfo類
while循環Cursor對象調用moveToNext()
返回List集合
插入一條
定義方法add(),插入一條記錄,參數:String電話號碼,String的mode模式
調用helper對象的getWritableDatabase()方法,獲取到SQLiteDatabase對象
調用SQLiteDatabase對象的insert()方法,插入一條記錄,參數:String表名,允許為null的列,ContentValues對象
獲取ContentValues對象,new出來
調用ContentValues對象的put()方法,參數:key,value
修改記錄
定義方法update(),修改記錄,參數:String電話號碼,String的mode模式
調用helper對象的getWritableDatabase()方法,獲取到SQLiteDatabase對象
調用SQLiteDatabase對象的update()方法,修改表記錄,參數:String表名,ContentValues對象,String的條件(“number=?”),String[]參數值數組
刪除記錄
定義delete()方法,刪除記錄,參數:String電話號碼
調用helper對象的getWritableDatabase()方法,獲取到SQLiteDatabase對象
調用SQLiteDatabase對象的delete()方法,刪除表記錄,參數:String表名,String的條件(“number=?”),String[]參數值數組
調用SQLiteDatabase對象的close()方法,關閉數據庫
CallSmsSafeActivity.java
package com.qingguow.mobilesafe;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.qingguow.mobilesafe.db.ado.BlackNumberAdo;
/**
* 通訊衛士
*
* @author taoshihan
*
*/
public class CallSmsSafeActivity extends Activity {
private ListView listview;
private List<Map<String, String>> infos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_call_sms_safe);
listview = (ListView) findViewById(R.id.lv_blacknumber);
BlackNumberAdo ado = new BlackNumberAdo(this);
infos = ado.findAll();
listview.setAdapter(new MyAdapter());
// //添加100條測試數據
// Random random=new Random();
// for(int i=1;i<=100;i++){
// ado.add("18805419000"+i, String.valueOf(random.nextInt(3)+1));
// }
}
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return infos.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(CallSmsSafeActivity.this,
R.layout.list_call_sms_safe_item, null);
TextView phoneView = (TextView) view
.findViewById(R.id.tv_main_phone);
TextView modeView = (TextView) view
.findViewById(R.id.tv_block_mode);
phoneView.setText(infos.get(position).get("phone"));
switch (infos.get(position).get("mode")) {
case "1":
modeView.setText("電話攔截");
break;
case "2":
modeView.setText("短信攔截");
break;
case "3":
modeView.setText("全部攔截");
break;
default:
break;
}
return view;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
}
}
BlackNumberAdo.java
package com.qingguow.mobilesafe.db.ado;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.qingguow.mobilesafe.db.BlackNumberDBOpenHelper;
public class BlackNumberAdo {
private BlackNumberDBOpenHelper helper;
public BlackNumberAdo(Context context) {
helper=new BlackNumberDBOpenHelper(context);
}
/**
* 插入數據
* @param phone
* @param mode
*/
public void add(String phone,String mode) {
SQLiteDatabase db=helper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("phone", phone);
values.put("mode", mode);
db.insert("blacknumber", null, values);
db.close();
}
/**
* 查詢全部
* @return
*/
public List<Map<String,String>> findAll(){
SQLiteDatabase db=helper.getReadableDatabase();
Cursor cursor=db.rawQuery("select phone,mode from blacknumber", null);
List<Map<String,String>> list=new ArrayList<Map<String,String>>();
while(cursor.moveToNext()){
Map<String,String> info=new HashMap<String, String>();
String phone=cursor.getString(0);
String mode=cursor.getString(1);
info.put("phone", phone);
info.put("mode", mode);
list.add(info);
}
cursor.close();
db.close();
return list;
}
/**
* 修改數據
* @param phone
* @param mode
*/
public void update(String phone,String mode) {
SQLiteDatabase db=helper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("phone", phone);
values.put("mode", mode);
db.update("blacknumber", values,"phone=?",new String[]{phone});
db.close();
}
/**
* 刪除數據
* @param phone
*/
public void delete(String phone){
SQLiteDatabase db=helper.getWritableDatabase();
db.delete("blacknumber", "phone=?", new String[]{phone});
db.close();
}
}
BlackNumberDBOpenHelper.java
package com.qingguow.mobilesafe.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
/**
* 黑名單數據庫幫助類
*
* @author taoshihan
*
*/
public class BlackNumberDBOpenHelper extends SQLiteOpenHelper {
public BlackNumberDBOpenHelper(Context context) {
super(context, "blacknumber", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table blacknumber (id integer primary key autoincrement,phone varchar(20),mode varchar(2))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Android 復制文本內容到系統剪貼板的最簡單實踐,android剪貼板
Android 復制文本內容到系統剪貼板的最簡單實踐,android剪貼板這個例子很簡單,直接上截圖和代碼。 布局文件activity_copy.xml代碼如下: &
Android 100多個Styles快速開發布局XML,一行搞定View屬性,一鍵統一配置UI...,androidui..
Android 100多個Styles快速開發布局XML,一行搞定View屬性,一鍵統一配置UI...,androidui.. Android開發中大量使用X
ACCESS 觸發器delete table事件變量使用及連續刪除
ACCESS 觸發器delete table事件變量使用及連續刪除ACCESS的TABLE DELETE 事件觸發後,會出現一個[舊]的記錄,這條記錄非常有用,可以用來作
Android 之 自動匹配字符AutoCompleteTextView,android正則匹配
Android 之 自動匹配字符AutoCompleteTextView,android正則匹配 AutoCompleteTextView是自動匹配字符,當我