[android] 手機衛士接收打電話廣播顯示號碼歸屬地,android衛士

來源:互聯網
上載者:User

[android] 手機衛士接收打電話廣播顯示號碼歸屬地,android衛士

使用廣播接收者接收打電話的意圖,顯示號碼歸屬地

 

建立一個類OutCallReceiver繼承系統的BroadcastReceiver

重寫onReceive()方法

調用getResultData()方法,擷取到String電話號碼,查詢資料庫擷取到歸屬地

package com.qingguow.mobilesafe.receiver;import com.qingguow.mobilesafe.utils.NumberQueryAddressUtil;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;/** * 接收打電話廣播 * @author taoshihan * */public class OutcallReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context arg0, Intent arg1) {        String phone=getResultData();        String address=NumberQueryAddressUtil.queryAddress(phone);        System.out.println("111"+address);        Toast.makeText(arg0, address, 1).show();    }}

 

 

資訊清單檔中定義<receiver>節點,和<intent-filter>節點,設定<action>節點名稱,android:name=”android.intent.action.NEW_OUTGOING_CALL”

需要許可權,android.permission.PROCESS_OUTGOING_CALLS

 代碼註冊廣播

此時的廣播接收者,只要一打電話就會被調用,使用者體驗不好,我們使用代碼註冊廣播接收者,用設定中心的開啟監聽電話來電的部分來控制這個廣播

 

在服務裡面調用registerReceiver()方法,註冊廣播,參數:BroadcastReceiver對象,IntentFilter對象

擷取IntentFilter對象,調用IntentFilter對象的addAction()方法,參數:android.intent.action.NEW_OUTGOING_CALL

 

在服務裡面解除註冊廣播,調用unregisterReceiver()方法,參數:BroadcastReceiver對象

 

package com.qingguow.mobilesafe.service;import com.qingguow.mobilesafe.receiver.OutcallReceiver;import com.qingguow.mobilesafe.utils.NumberQueryAddressUtil;import android.app.Service;import android.content.Intent;import android.content.IntentFilter;import android.os.IBinder;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.widget.Toast;/** * 來電顯示 *  * @author taoshihan *  */public class AddressService extends Service {    private TelephonyManager tm;    private MyPhoneStateListener phoneStateListener;    private OutcallReceiver outcallReceiver;    @Override    public IBinder onBind(Intent arg0) {        // TODO Auto-generated method stub        return null;    }    /**     * 服務建立     */    @Override    public void onCreate() {        super.onCreate();        tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);        phoneStateListener = new MyPhoneStateListener();        tm.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);                //註冊廣播        outcallReceiver=new OutcallReceiver();        IntentFilter filter=new IntentFilter();        filter.addAction("android.intent.action.NEW_OUTGOING_CALL");        registerReceiver(outcallReceiver, filter);    }    private class MyPhoneStateListener extends PhoneStateListener {        @Override        public void onCallStateChanged(int state, String incomingNumber) {            super.onCallStateChanged(state, incomingNumber);            switch (state) {            case TelephonyManager.CALL_STATE_RINGING:                String info = NumberQueryAddressUtil                        .queryAddress(incomingNumber);                Toast.makeText(getApplicationContext(), info, 1).show();                break;            default:                break;            }        }    }    /**     * 服務銷毀     */    @Override    public void onDestroy() {        // TODO Auto-generated method stub        super.onDestroy();        //取消監聽        tm.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);        phoneStateListener=null;        //解除註冊廣播        unregisterReceiver(outcallReceiver);        outcallReceiver=null;    }}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.