Android电话状态抓取—2

private PhoneCallListener mPhoneCallListener;

private TelephonyManager mTelephonyManager;

//private PhoneStateListener mPhoneStateListener;
private AudioManager mAudioManager;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mPhoneCallListener = new PhoneCallListener();
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mTelephonyManager.listen(mPhoneCallListener,PhoneCallListener.LISTEN_CALL_STATE);
//mTelephonyManager.listen(mPhoneCallListener, PhoneCallListener.LISTEN_SERVICE_STATE);
//mTelephonyManager.listen(mPhoneCallListener, PhoneCallListener.LISTEN_DATA_CONNECTION_STATE);
}

/**
* 利用JAVA反射机制调用ITelephony的endCall()结束通话。
*/
private void endCall()
{
// 初始化iTelephony
Class<TelephonyManager> c = TelephonyManager.class;
Method getITelephonyMethod = null;
try
{
// 获取所有public/private/protected/默认
// 方法的函数,如果只需要获取public方法,则可以调用getMethod.
getITelephonyMethod = c.getDeclaredMethod("getITelephony",(Class[]) null);
// 将要执行的方法对象设置是否进行访问检查,也就是说对于public/private/protected/默认
// 我们是否能够访问。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false
// 则指示反射的对象应该实施 Java 语言访问检查。
getITelephonyMethod.setAccessible(true);
ITelephony iTelephony = (ITelephony) getITelephonyMethod.invoke(mTelephonyManager,(Object[]) null);
iTelephony.endCall();
Log.v(this.getClass().getName(), "endCall......");
}
catch (Exception e)
{
Log.e(this.getClass().getName(), "endCallError", e);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值