2013-02-09 77 views
2

我要阻止/解除我的Android應用程序來電。 我可以使用下面的代碼做到這一點。阻塞來電android系統

telephony = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); 
customPhoneListener = new PhoneCallStateListener(MainActivity.this, vSMS); 
start.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     telephony.listen(customPhoneListener, 
         PhoneStateListener.LISTEN_CALL_STATE); 
     Toast.makeText(MainActivity.this, "START", Toast.LENGTH_SHORT).show(); 
    } 
}); 

stop.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     telephony.listen(customPhoneListener, 
         PhoneStateListener.LISTEN_NONE); 
     Toast.makeText(MainActivity.this, "STOP", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

但問題是,當我開始按鈕點擊呼叫阻塞激活服務,然後我們去主頁呼叫阻塞仍處於激活狀態。(這很好)。 但當我打開我的應用程序,然後按停止按鈕,然後調用不會取消阻止。 它仍然阻塞。 爲什麼? 我做錯了什麼?

+0

被調用疏通功能是工作,你按下home鍵之前?你檢查過這個場景嗎? – vinaykumar 2013-02-09 10:42:28

+0

它是作爲一種服務工作嗎? – Kristopher 2013-02-09 10:46:27

+0

是的,它是工作之前,我按home鍵 – 2013-02-09 11:58:01

回答

1

你得到使用活動場景和customPhoneListener我想被定義爲您的活動實例變量的電話對象。

但是,當你關閉活動(通過將主屏幕),並再次打開它,你有一個新的環境,因此停止按鈕幾乎什麼都不做。

要解決這一點,你可以嘗試以下方法:

1 - 用戶應用程序上下文

telephony = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 

2-確保監聽對象customPhoneListener是您的應用程序的生命週期中的相同你的活動。儘量做到static或定義它在application class