android电话处理

与电话相关权限

拨打电话
android.permission.CALL_PHONE,允许程序从非系统拨号器里输入电话号码
通话权限
android.permission.CALL_PRIVILEGED,允许程序拨打电话,替换系统的拨号器界面

读取电话状态
android.permission.READ_PHONE_STATE,访问电话状态

修改电话状态
android.permission.MODIFY_PHONE_STATE,修改电话状态,如飞行模式,但不包 替换系统拨号器界面

处理拨出电话
android.permission.PROCESS_OUTGOING_CALLS,允许程序监视,修改或放弃播出电话
AndroidManifest.xml

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

扩展阅读:[url=http://www.cnblogs.com/classic/archive/2011/06/20/2085055.html]android权限大全[/url]
----------------------------------------------------------------
Android在电话状态改变是会发送
action为android.intent.action.PHONE_STATE的广播

而拨打电话时会发送
action为android.intent.action.NEW_OUTGOING_CALL的广播
例如:

IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.NEW_OUTGOING_CALL");
filter.addAction("android.intent.action.PHONE_STATE");

-------------------------------------------------
去电时:
* 未接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE
* 来电时: *
* 未接:phone_state=RINGING
* 已接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE
-------------------------------------------

JAVA代码

public class PhoneCallReceiver extends BaseReceiver {
/**
//拨打电话判断及获取号码
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){

String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
*/

@Override
public void onReceive(Context context, Intent intent) {

String phone_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
/*去电时:
* 未接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE
* 来电时: *
* 未接:phone_state=RINGING
* 已接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE**/
System.out.println("phone_state======"+phone_state);
String incoming_number = intent.getStringExtra("incoming_number");
//String incoming_number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER );
String outgoing_number = intent.getStringExtra("android.intent.extra.PHONE_NUMBER");
System.out.println("incoming_number======"+incoming_number);
System.out.println("outgoing_number======"+outgoing_number);
//去电设值
if(outgoing_number!=null && outgoing_number.length()>0){
System.out.println("去电号码"+outgoing_number);

}
//来电设值
if(incoming_number!=null && incoming_number.length()>0){
System.out.println("来电号码"+incoming_number);
}

if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(phone_state) || TelephonyManager.EXTRA_STATE_RINGING.equals(phone_state))
{
System.out.println("去电话未接或来电未接及来电已接");

}
if (TelephonyManager.EXTRA_STATE_IDLE.equals(phone_state))
{
System.out.println("电话已挂断");
}
return;
}

}


参考文章:
[url=http://www.congci.com/item/android-telephonymanager]Android之TelephonyManager使用[/url]
[url=http://dev.10086.cn/cmdn/bbs/thread-57818-1-1.html]Android 电话状态的监听(来电和去电)[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值