Android: определить, когда пользователь выбирает номер (он хочет позвонить) в списке контактов? - PullRequest
2 голосов
/ 06 сентября 2010

Я пытаюсь заставить фоновую службу Android получать "уведомления", когда пользователь выбирает номер телефона (он хочет позвонить) из списка контактов телефона. Моя цель состоит в том, чтобы не дать системе выполнить вызов и предоставить пользователю диалоговое окно выбора, а затем перейти оттуда ... Нужна помощь.

1 Ответ

2 голосов
/ 07 сентября 2010

Я нашел способ сделать то, что я просил вчера, поэтому я делюсь этим здесь для всех, кто заинтересован.Хитрость заключалась в том, чтобы поймать переданное намерение NEW_OUTGOING_CALL в BroadcastReceiver, а не любое событие, связанное с выбором контактов, как я думал.

Итак ... следуйте инструкциям.элемент application файла AndroidManifest.xml добавляет элемент получателя ... Атрибут android: name является классом, который будет расширяться из BroadcastReceiver (поясняется ниже).

<receiver android:name=".OutgoingCallDetection">

<action android:name="android.intent.action.NEW_OUTGOING_CALL"
  android:priority="0" />

ааа!И вам понадобится специальное разрешение ...

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

Метод onReceive в классе, который расширяет BroadcastReceiver (OutgoingCallDetection в этом примере).Обратите внимание, что setResultData (null) - это то, что предотвращает выполнение вызова самой системой.

public void onReceive(Context arg0, Intent arg1) {

    setResultData(null);

    // Start an activity and then show a dialog, or something...

}

Вот оно и работает по мере необходимости.

...