2012-03-09 224 views
0

我正在爲Android 2.3.3製作一個SIP應用程序。我可以打電話給某人,當有人打電話給我時,會顯示我的「來電屏幕」。但是當我的應用程序在後臺運行並且有人給我打電話時,「呼叫屏幕」未啓動。所以我怎樣才能使它像普通的來電一樣啓動。如何顯示在後臺運行的Android應用程序的呼叫屏幕

FIXED:

清單:添加以下代碼的應用程序標籤

<receiver android:name=".ReceiverTest" android:enabled="true"> 
      <intent-filter> 
       <action android:name="com.example.INCOMING_CALL" /> 
      </intent-filter> 
    </receiver> 

接收器類:當我收到一個電話,它會打開我的Incomingcall頁

public class ReceiverTest extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     ... 
     Intent nextPage= new Intent("com.example.IncomingPage"); 
     nextPage.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     arg0.startActivity(nextPage); 
      ...  
    } 

} 
+0

你在談論傳入的SIP電話或VOICE電話嗎? – slayton 2012-03-09 14:05:45

回答

1

如果您使用的是活動,則您的應用程序未運行該背景。當一個新的活動被帶到棧頂時,你的應用程序暫停並放置在後臺。爲了讓您的應用程序能夠接收任何類型的通知,請嘗試運行服務或創建廣播接收器來提取您想要收聽的意圖。這可以讓您的應用程序在不處於堆棧頂部時進行處理。

UPDATE

所以,你必須註冊一個廣播接收器......這是件好事......但如果你在活動註冊並在活動被殺死,所以是參考和VM你的申請和意圖沒有收到。嘗試讓廣播接收器獨立於活動(即使用清單使系統調用它)。然後,即使您的應用程序已經死機,您的廣播接收器也可以收到意圖,並啓動您所需的內容。

另一種方法是創建一個服務,註冊您的接收器 - 服務可以在後臺運行,但您必須擔心使您的服務足夠輕以至於不會被殺死(更多技巧)。最好的選擇是1(少開銷)。

+0

我想你不理解我或我沒有你。讓我解釋一下thiş的方式。我運行我的應用程序,之後我註冊我的廣播接收器來接收來電,它可以在我的應用程序中完美工作。如果我按下「主頁」按鈕,我的應用程序會轉到後臺,但我仍然可以接聽電話,現在出現問題,我希望我的應用程序進入屏幕,以便我可以拒絕或接受電話。 – SherMi 2012-03-09 15:09:21

+0

我明白你在說什麼。當您的應用程序在後臺運行時有人打電話給您,您的呼叫屏幕不會顯示。再說一遍......在後臺運行的應用程序適用於所有目的「死」,除非有一個廣播接收器能夠獲得來電的意圖,或者是一個正在檢測它的服務。閱讀更新的更多信息.... – jjNford 2012-03-09 15:14:15

+0

哦,現在我知道你的意思了,謝謝你和我的理解 – SherMi 2012-03-09 16:14:07

相關問題