赵雅智_service实例1电话监听

来源:互联网 发布:python程序员 外快 编辑:程序博客网 时间:2024/05/20 06:41

步骤:

  1. 创建CallStateService继承Service
  2. 取得电话服务
  3. 监听电话动作
    1. 电话监听的对象
      1. 没有电话时
      2. 电话响铃时
      3. 电话接通时
    2. 电话监听的行为
  4. 启动service
  5. 注册service并添加监听电话状态的权限

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.callstatelistener"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="19" />    <!-- 监听电话状态 -->    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.callstatelistener.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <!-- 注册service -->        <service android:name="com.example.callstatelistener.CallStateService"></service>            </application> </manifest>

CallStateService.java


package com.example.callstatelistener;import android.app.Service;import android.content.Context;import android.content.Intent;import android.os.IBinder;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.util.Log;/** * 监听电话状态service *  * @author zhaoyazhi *  *         2014-6-17 */public class CallStateService extends Service {public static final String TAG = "aaa";@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {super.onCreate();// 取得电话服务TelephonyManager telManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);// 电话监听的对象,电话监听的行为telManager.listen(new MyPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);}class MyPhoneStateListener extends PhoneStateListener {/** * int state电话状态。  * String incomingNumber电话号码 */@Overridepublic void onCallStateChanged(int state, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);switch (state) {case TelephonyManager.CALL_STATE_IDLE: /* 无任何状态时 */// 实现黑名单操作Log.i(TAG, "------------------没有电话来");break;case TelephonyManager.CALL_STATE_RINGING: /* 电话进来时 */Log.i(TAG, "------------------来电话了---并且响铃");break;case TelephonyManager.CALL_STATE_OFFHOOK: /* 接起电话时 */Log.i(TAG, "------------------通话中");break;default:break;}};}}

MainActivity.java
package com.example.callstatelistener;import android.app.Activity;import android.content.Intent;import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//intent 意图Intent service = new Intent(MainActivity.this, CallStateService.class);//启动service服务this.startService(service);}}

控制台输出:

0 0