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);
}
}
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);
}
}