2016-03-30 3 views
0

Я уже пробовал искать свой ответ, но не смог получить конкретный ответ, который я проверял.Широковещательный приемник не вызывается каждый раз

Проблема: Я пытаюсь сделать приемник смены состояния вызова. Я зарегистрировал широковещательный приемник в манифесте и сделал для него класс приемника. В onReceive() я зарегистрировал PhonsStateListener для прослушивания изменений состояния вызова. Теперь, когда я получаю вызов, вызывается onReceive(), и когда он отключен, onReceive вызывается снова правильно. Но когда я повторил вышеупомянутый процесс снова, onReceive() вызывается при входящем вызове, но не при отключении этого вызова.

Мой манифест для приемника

 <receiver android:name=".CallReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE"/> 
     </intent-filter> 

Я понятия не имею, что может быть плохого в этом. Проблема заключается в том, что onReceive() не вызывается при отключении второго вызова. Пожалуйста, дайте мне знать, требуется ли какой-либо другой код. Я проверяю на Примечание2 Jellybean 4.1.2

ответ

0

Вы пытались добавить это в ваш файл манифеста:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

И не забудьте unregisterReceiver() Трансляция в вашей деятельности:

@Override 
    protected void onDestroy() { 
     LocalBroadcastManager.getInstance(this).unregisterReceiver(your_broadcast_name); 
     super.onDestroy(); 
    } 
+0

Я не могу понять использование разрешения wakelock здесь. Я не пытаюсь приобрести какой-либо wakelock, а также, я не получаю исключения безопасности. Кроме того, я не могу понять причину отмены регистрации. Кроме того, это приемник, поэтому также возможно, что я вообще не могу открыть свою активность (так что onDestroy не будет вызываться), но все равно приемник должен работать нормально. –

0

Вы, возможно, потребуется получить разрешение:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

Да, это уже есть. Поэтому я получаю это в первый раз –

0

Спасибо за обмен ваше мнение. Проблема заключалась в коде вещательного приемника. Я делал что-то неправильно в методе onReceive(), из-за которого проблема возникала на системном уровне, и мой процесс был убит. После исправления этой проблемы он отлично справился.

+0

Это должно быть редактирование в вопросе или в качестве комментария вместо его ответа. –

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