Android筆記——對系統通話記錄的刪除操作

來源:互聯網
上載者:User

標籤:div   out   否則   程式   null   等價   query   new   欄位   

手機通話記錄是儲存在資料庫中的,位置:  /data/data/com.android.providers.contacts/databases/calllog.db ,表名:calls 

這張表中有個type欄位,屬性值為常量值:

  1.        來電:CallLog.Calls.INCOMING_TYPE (常量值:1)
  2.        已撥:CallLog.Calls.OUTGOING_TYPE(常量值:2)
  3.        未接:CallLog.Calls.MISSED_TYPE(常量值:3)

這是最常見的,number欄位表示電話號碼,還有些其他欄位就不一一說明了

添加許可權
    <uses-permission android:name="android.permission.READ_CONTACTS"/>    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />

前兩個許可權是讀/寫連絡人的許可權,最後一個是寫通話記錄的許可權,這個許可權我之前並沒有加上,但是在操作通話記錄時,Android Studio推薦加上這個許可權,否則就會劃紅線,但是並不影響程式運行

編寫代碼

系統通過ContentProvider (內容提供器)向外共用。

Uri

CallLog.Calls.CONTENT_URI 等價於:Uri.parse("content://call_log/calls"); 用哪個都可以

擷取內容解析器
ContentResolver resolver = getContentResolver();

getContentResolver()方法是Content類的方法

操作內容解析器

其實操作和操作Sqlite的方法幾乎一樣,比如說刪除操作:

resolver.delete(CallLog.Calls.CONTENT_URI, "number=?", new String[]{number});

會刪除給定的號碼的所有記錄,還可以增加個條件(如 type=1),刪除給定的號碼的來電記錄

查詢某個連絡人的所有通話記錄可以使用(query方法)

 

resolver.query(CallLog.Calls.CONTENT_URI, null, "number=?", new String[]{number}, null);

 

 

 

雖然刪除了電話號碼記錄,但是可能會有延遲,所以我們查詢電話號碼錶是否改變了

在MainActivity中增加一個類繼承ContentObserver 用來觀察電話號碼錶是否改變,如果發生變化,則再次刪除該號碼

/**     * ContentObserver 上下文觀察者     */    class CallLogObserver extends ContentObserver {        private String number;        public CallLogObserver(String number, Handler handler) {            super(handler);            this.number = number;        }        /**         * 如果通話記錄發生改變         *         * @param selfChange         */        @Override        public void onChange(boolean selfChange) {            super.onChange(selfChange);            deleteCallLog(number);        }    }

別忘了調用這個類,通過getContentResolver()獲得解析器,再調用registerContentObserver方法,注意最後一個變數給的就是編寫的CallLogObserver類

getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_URI, true, new CallLogObserver(incomingNumber, new Handler()));

 

Android筆記——對系統通話記錄的刪除操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.