2013-02-09 3 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

- функция разблокировки вызова - это работа перед нажатием кнопки «домой»? Вы проверили этот сценарий? – vinaykumar

+0

Работает ли это как сервис? – Kristopher

+0

да, это работает до того, как я нажимаю кнопку «домой» –

ответ

1

Вы получаете телефонный объект, используя контекст активности, и customPhoneListener Я предполагаю, что это переменная экземпляра в вашей деятельности.

Но когда вы закрываете действие (перейдя на главный экран) и открываете его снова, у вас есть новый контекст, поэтому кнопка остановки почти ничего не делает.

Чтобы решить эту проблему, вы можете попробовать следующее:

1 Контекст приложения пользователя

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

2- Убедитесь, что объект слушателя customPhoneListener тот же на протяжении всего жизненного цикла приложения не вашей деятельности. Попробуйте сделать это static или определите его в application class

Смежные вопросы