2015-09-02 112 views
3

我做從我app.Which的驗證電話,其配置5-10秒後,應斷開。處理程序不調用

這是我的代碼;

    Intent callIntent = new Intent(Intent.ACTION_CALL); 
        callIntent.setData(Uri.parse("tel:" + phoneNumber)); 
        callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

        handler.postDelayed(new Runnable() { 
         @Override 
         public void run() { 
        /*It is never called up untill call got disconnected/hanged up. */ 
          Log.d(TAG, "Disconnecting :"); 
          disconnectCall(); 
         } 
        }, 5000); 

        startActivity(callIntent); 

的問題是不叫,直到callIntent活動被中止即用戶disconnectCall()方法強行斷開了的呼叫/舉起了。我需要在調用活動期間簡單地調用disconnectCall()。沒有得到代碼中的問題。

回答

1

從我的角度點的問題是未調用處理程序,或者直到上一次活動的任何方法單線程Android的服務類獲得over.So我加入一段代碼內部處理程序可運行的,它得到了工作。

handler.post(callTestHandler = new Runnable() { 
         @Override 
         public void run() { 
          try { 
           //Intent callIntent = new Intent("android.intent.action.NEW_OUTGOING_CALL"); 
           Intent callIntent = new Intent(Intent.ACTION_CALL); 
           callIntent.setData(Uri.parse("tel:" + phoneNumber)); 
           callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           handler.postDelayed(new Runnable() { 
            @Override 
            public void run() { 
             Log.d(TAG, "Disconnecting :"); 
             disconnectCall(); 
            } 
           }, 5000); 
           startActivity(callIntent); 
          } catch (Exception e) { 
           e.getMessage(); 
          } 
         } 
        }); 

如果有人有不同的答案/解決方案,請發佈它。

3

要調用startActivity(callIntent)。 這意味着你控制權轉移給調用者的應用程序的Android。當用戶需要時,可以通過android調用者應用程序斷開該調用。

+0

我得到了問題。單線程服務class.let更新問題。 –

2

丹尼爾提到的,一旦你開始呼叫活動你是在控制你的應用程序主線程將只獲得CPU時間不再當你的活動又回到前臺。

掛斷使用this

+0

謝謝。我們寫了掛斷電話代碼。雅是因爲主線。 –