#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.