android-擷取手機電話的狀態

來源:互聯網
上載者:User

無論是打電話還是來電,系統廣播是會發送相應的訊息的,我們可以監聽廣播擷取手機電話狀態。

首先在manifest檔案中配置自己的BroadcastReceiver,和聲明許可權。

<receiver android:name=".filter.PhoneStatReceiver"><br /> <intent-filter><br /> <action android:name="android.intent.action.PHONE_STATE"/><br /> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /><br /> </intent-filter><br /> </receiver></p><p> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><br /> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
在自己的BroadcastReceiver中做相應的處理

<br />import android.app.Service;<br />import android.content.BroadcastReceiver;<br />import android.content.Context;<br />import android.content.Intent;<br />import android.telephony.TelephonyManager;<br />import android.util.Log;</p><p>public class PhoneStatReceiver extends BroadcastReceiver{</p><p> private static final String TAG = "PhoneStatReceiver";</p><p> private static boolean incomingFlag = false;</p><p> private static String incoming_number = null;</p><p> @Override<br /> public void onReceive(Context context, Intent intent) {<br /> //如果是撥打到電話<br /> if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){<br /> incomingFlag = false;<br /> String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);<br /> Log.i(TAG, "call OUT:"+phoneNumber);<br /> }else{<br /> //如果是來電<br /> TelephonyManager tm =<br /> (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE); </p><p> switch (tm.getCallState()) {<br /> case TelephonyManager.CALL_STATE_RINGING:<br /> incomingFlag = true;//標識當前是來電<br /> incoming_number = intent.getStringExtra("incoming_number");<br /> Log.i(TAG, "RINGING :"+ incoming_number);<br /> break;<br /> case TelephonyManager.CALL_STATE_OFFHOOK: //存在至少有一個呼叫撥號,活躍,或 //保留,並沒有來電響鈴或等待<br /> if(incomingFlag){<br /> Log.i(TAG, "incoming ACCEPT :"+ incoming_number);<br /> }<br /> break;</p><p> case TelephonyManager.CALL_STATE_IDLE: //閑置狀態<br /> if(incomingFlag){<br /> Log.i(TAG, "incoming IDLE");<br /> }<br /> break;<br /> }<br /> }<br /> }<br />}

相關文章

聯繫我們

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