Android广播接实现电话的监听
1:需要在AndroidManifest.xml清单中添加权限
2:注册广播 要注意事件的级别 (android中的级别-1000~1000)
详细配置请看 AndroidManifest.xml
package="com.zyw.broadcastsendsms"android:versionCode="1"android:versionName="1.0" >
android:minSdkVersion="8"android:targetSdkVersion="15" />
android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" >
android:name=".SendSMS"android:label="@string/title_activity_send_sms" >
3:编写广播的实现类 这里需要继承BroadcastReceiver 实现onReceive()方法
程序的源代码如下:
packagecom.zyw.broadcastsendsms;importandroid.app.Service;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.telephony.TelephonyManager;importandroid.util.Log;public class PhoneBroadcastReceiver extendsBroadcastReceiver {private static final String TAG = "message";private static boolean mIncomingFlag = false;private static String mIncomingNumber = null;
@Overridepublic voidonReceive(Context context, Intent intent) {//如果是拨打电话
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
mIncomingFlag= false;
String phoneNumber=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.i(TAG,"call OUT:" +phoneNumber);
}else{//如果是来电
TelephonyManager tManager =(TelephonyManager) context
.getSystemService(Service.TELEPHONY_SERVICE);switch(tManager.getCallState()) {caseTelephonyManager.CALL_STATE_RINGING:
mIncomingNumber= intent.getStringExtra("incoming_number");
Log.i(TAG,"RINGING :" +mIncomingNumber);break;caseTelephonyManager.CALL_STATE_OFFHOOK:if(mIncomingFlag) {
Log.i(TAG,"incoming ACCEPT :" +mIncomingNumber);
}break;caseTelephonyManager.CALL_STATE_IDLE:if(mIncomingFlag) {
Log.i(TAG,"incoming IDLE");
}break;
}
}
}/*@Override
public void onReceive(Context context, Intent intent) {
String number = getResultData();
if("5556".equals(number)){
setResultData(null);//挂断
}else{
number = "12593"+ number; //其他,则加区号
setResultData(number);
}
}*/}
原文:http://www.cnblogs.com/flyoung/p/4929807.html