Начать деятельность в BroadcastReceiver

1

Я создал небольшое приложение. Единственное, что он делает, - поймать исходящий звонок и показать некоторую активность, когда это произойдет. Существует только Activity и BroadcastReceiver.

Я хотел интегрировать свой код с другим приложением, я удалил BroadcastReceiver из Manifest.xml и создал (и зарегистрировал) его динамически из основного действия. Мой приемник хорошо стрелял, но активность не появляется.

В чем разница между этими двумя методами?

Как я могу показать активность?

от MainActivity.java:

callInterceptor = new InterceptOutgoingCall();
IntentFilter callInterceptorIntentFilter = new IntentFilter("android.intent.action.NEW_OUTGOING_CALL");
callInterceptorIntentFilter.setPriority(100);
registerReceiver(callInterceptor,  callInterceptorIntentFilter);

и из функции receiver.onReceive(Context,Intent):

Intent alertIntent = new Intent(context, AlertActivity.class);
alertIntent.putExtra("callnumber", phonenbr);
alertIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(alertIntent);

моя деятельность объявлена в manifest следующим образом:

<activity android:name=".AlertActivity" 
            android:screenOrientation="portrait"/>
Теги:
android-activity
broadcastreceiver

1 ответ

1
Лучший ответ

Я нашел ответ в двух потоках:

  1. Android запускает деятельность от широковещательного приемника

  2. Активность начинается с уведомления, открытого поверх стека действий

В манифесте активность должна быть объявлена с помощью android:taskAffinity. И при запуске я должен был добавить флаг = Intent.FLAG_ACTIVITY_NEW_TASK

Ещё вопросы

Сообщество Overcoder
Наверх
Меню