2016-02-12 38 views
-1

**它處於摘機狀態時不會中斷while while循環。留在while循環中。在這兩種狀態Funtion調用工作正常,但**電話狀態Listner無法正常工作android

PhoneStateListener phoneStateListener = new PhoneStateListener() { 
      @Override 
      public void onCallStateChanged(int state, String incomingNumber) { 
       // TODO Auto-generated method stub 
       // super.onCallStateChanged(state, incomingNumber); 
       switch (state) { 
       case TelephonyManager.CALL_STATE_RINGING: 
        callStatus=true; 
        while(callStatus) 
        { 

        OnOff(); 
        if(state==TelephonyManager.CALL_STATE_OFFHOOK) 
        { 
         break; 

        } 

        } 
        break; 
       case TelephonyManager.CALL_STATE_OFFHOOK: 
        callStatus=false; 
        Off(); 
        break; 
       default: 
        break; 
       } 
+0

歡迎來到SO。不幸的是,你很難弄清楚你在問什麼。你寫的唯一非代碼更像是意識流而不是問題描述。你還沒有給我們足夠的代碼來找出可能導致問題的原因。如果你能把它變成[mcve](在這種情況下強調「完整」),那將是最好的。 – Teepeemm

回答

0

每次廣播reciever之稱,是創造了一個新的實例。所以你的代碼將無法工作 - 它永遠不會在同一個對象上獲得OFFHOOK。它可能工作,如果callStatus是一個靜態的,但即使如此是糟糕的代碼 - 你忙於循環在UI線程。