как показать экран вызова, пока приложение для Android работает на фоне - PullRequest
0 голосов
/ 09 марта 2012

Я делаю SIP-приложение для Android 2.3.3. Я могу позвонить кому-нибудь, и мой «экран входящего вызова» отображается, когда кто-то звонит мне. Но когда мое приложение работает в фоновом режиме и кто-то звонит мне, «экран вызова» не запускается. так как я могу сделать так, чтобы он запускался как обычный входящий звонок.

ИСПРАВЛЕНО:

Манифест: добавьте следующий код в тег приложения

  <receiver android:name=".ReceiverTest" android:enabled="true">
             <intent-filter>
                 <action android:name="com.example.INCOMING_CALL" />
             </intent-filter>
  </receiver>

Класс получателя: при получении вызова откроется моя страница входящих вызовов

public class ReceiverTest extends BroadcastReceiver{

    @Override
    public void onReceive(Context arg0, Intent arg1) {  
        ...
        Intent nextPage= new Intent("com.example.IncomingPage");
        nextPage.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        arg0.startActivity(nextPage);   
            ...     
    }

}

1 Ответ

1 голос
/ 09 марта 2012

Если вы используете Activity, ваше приложение не работает в фоновом режиме.Когда новое действие выводится на вершину стека, ваше приложение приостанавливается и помещается в фоновый режим.Чтобы разрешить вашему приложению получать уведомления любого типа, попробуйте запустить службу или создать широковещательный приемник, чтобы определить намерения, которые вы хотите прослушать.Это позволяет вашему приложению обрабатывать данные, пока оно не находится на вершине стека.

ОБНОВЛЕНИЕ

Итак, вы зарегистрировали широковещательный приемник ... это хорошо.... но ... Если вы зарегистрировали его в своей деятельности, и эта активность прекращена, то ссылка и vm вашего приложения и намерение не получены.Попробуйте сделать ваш вещательный приемник независимым от действия (т.е. сделать так, чтобы он вызывался системой с использованием манифеста).Тогда ваш широковещательный приемник может получать намерения, даже когда ваше приложение мертво, и запускать то, что вам нужно.

Альтернативой является создание службы, которая регистрирует ваш получатель - служба может работать в фоновом режиме, но тогда вам придется беспокоитьсяо том, чтобы сделать ваш сервис достаточно легким, чтобы его никогда не убили (еще несколько хитростей).Лучше всего лучше вариант 1 (намного меньше накладных расходов).

...