Необходимо отключить службу при поступлении вызова и когда пользователь набирает номер

#android #android-intent #android-context #telephony

#Android #android-намерение #android-контекст #телефония

Вопрос:

Итак, у меня есть служба, которая работает в фоновом режиме (это суперсекретно, поэтому я не могу сказать вам, что это такое :)) но мне нужно иметь возможность отключать ее, когда пользователь инициирует вызов или поступает вызов. До сих пор я проверял Intent.ACTION_ANSWER , но по какой-то причине мой широковещательный приемник никогда его не обнаруживает. Я также пытался использовать PhoneStateListener , но в моих заявлениях case я не могу понять, как что-либо сделать с моим сервисом. К какому контексту относится PhoneStateListener ?

Какой-нибудь пример кода для моего BroadcastReceiver :

 public void onReceive(Context context, Intent intent) {     
if (intent.getAction().equals(Intent.ACTION_ANSWER)) {
        phoneRinging = true;            
    }

Intent i = new Intent(context, MyService.class);        
    i.putExtra("phone", phoneRinging);
    context.startService(i);
}
  

Вот фрагмент для запуска сервиса через PhoneStateListener .
Пример: startService(new Intent(---CONTEXT---, MySuperSecretService.class))

И получатель находится в манифесте:

 <receiver android:name=".PhoneReceiver" android:enabled="true">
    <intent-filter>
        <action android:name="android.intent.action.ANSWER"></action>
    </intent-filter>
</receiver>
  

ЧТО входит в CONTEXT часть этого утверждения, если я нахожусь в PhoneStateListener ?

Ответ №1:

Пожалуйста, проверьте ACTION_PHONE_STATE_CHANGED вместо ACTION_ANSWER. ACTION_ANSWER не является широковещательным намерением для входящего вызова. Это стандартное действие activity.