`
mickey_hou
  • 浏览: 237207 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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);
        }
    }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics