2012-10-09 48 views
2

我正在開發一個應用程序,它將顯示來電的服務提供者(如Vodaphone等)信息。 我使用烤麪包片做好準備。用以下代碼需要幫助來顯示來電者信息

 TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
       PhoneStateListener callStateListener = new PhoneStateListener() { 
       public void onCallStateChanged(int state, String incomingNumber) 
       { 
         // TODO React to incoming call. 

         if(state==TelephonyManager.CALL_STATE_RINGING) 
         { 
           Toast.makeText(getApplicationContext(),finder.find(incomingNumber), Toast.LENGTH_LONG).show(); 

         } 

       } 
       }; 
       telephonyManager.listen(callStateListener,PhoneStateListener.LISTEN_CALL_STATE); 

問題是吐司很少見的時間。我想讓它顯示直到用戶沒有收到電話(即直到電話響起,一旦接收到敬酒應該消失)。

我該怎麼做。

我可以使用一些其他的控制一樣對話框等

感謝

回答

1

運行的土司處理器線程像下面:

呼叫按鈕的的onclick嘗試以下操作:

  Button call = (Button) findViewById(R.id.call); 
    call.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //call the user function to make call 

     } 
    }); 

,並在你的類中添加這個方法:

 private final Runnable mRunnable = new Runnable() { 

    public void run() { 
      Toast.makeText(getApplicationContext(),finder.find(incomingNumber), Toast.LENGTH_LONG).show(); 
     mHandler.postDelayed(mRunnable, 1000); 
    } 

}; 

並取消結束按鈕,或者一旦用戶你的麪包的onclick拿起電話:

  Button end= (Button) findViewById(R.id.end); 
    end.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //call the function to end the call if the other user dont receive 

     } 
    }); 

爲您的函數以其它方式使用:

 if(state==TelephonyManager.CALL_STATE_RINGING) 
        { 
          mHandler.postDelayed(mRunnable, 1000); 

        } 
+0

SRY朋友不能得到U,請詳細說明,我是一名初學者。 – kamal

+0

聲明private Handler mHandler = new Handler; –