Я создал небольшое приложение. Единственное, что он делает, - поймать исходящий звонок и показать некоторую активность, когда это произойдет. Существует только 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 запускает деятельность от широковещательного приемника
Активность начинается с уведомления, открытого поверх стека действий
В манифесте активность должна быть объявлена с помощью android:taskAffinity
. И при запуске я должен был добавить флаг = Intent.FLAG_ACTIVITY_NEW_TASK