Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> [android] 手機衛士黑名單功能(列表展示),android衛士

[android] 手機衛士黑名單功能(列表展示),android衛士

編輯:關於android開發

[android] 手機衛士黑名單功能(列表展示),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) {

    }

}

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved