2012-03-09 4 views
0

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

ИСПРАВЛЕНО:

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

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

Класс приемника: когда я получаю звонок, она откроет свою страницу Incomingcall

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); 
      ...  
    } 

} 
+0

Вы говорите о входящих SIP-звонках или звонках VOICE? – slayton

ответ

1

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

UPDATE

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

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

+0

Я думаю, вы меня не поняли, или я вас не знал. позвольте мне объяснить thiş путь. Я запускаю свое приложение, после чего я регистрирую свой широковещательный приемник для приема входящих звонков, он отлично работает, пока я в своем приложении. И если я нажму кнопку «Главная», мое приложение перейдет на задний план, но я все равно могу принимать вызовы, и теперь возникает проблема, я хочу, чтобы мое приложение появилось на экране, чтобы я мог отклонить или принять вызов. – SherMi

+0

Я получаю то, что вы говорите. Экран вашего вызова не отображается, когда кто-то звонит вам, когда приложение работает в фоновом режиме. Снова ... приложения, работающие в фоновом режиме, для всех целей «мертвы», если нет широковещательного приемника, который получит намерение входящего вызова или службу, которая его обнаруживает. Прочитайте обновление для получения дополнительной информации .... – jjNford

+0

О, теперь я знаю, что вы имеете в виду, спасибо и прошу прощения за мое понимание – SherMi

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