在BroadcastReceiver中启动活动

时间:2012-01-24 10:25:54

标签: android android-activity broadcastreceiver

我已经构建了一个小应用程序。它唯一能做的就是接听拨出电话并在发生时展示一些活动。只有ActivityBroadcastReceiver

我想将我的代码与另一个应用程序集成,我从Manifest.xml中删除了BroadcastReceiver,并从主活动中动态创建(并注册)了它。我的接收器发射良好,但活动没有显示出来。

这两种方法有什么区别?

如何让活动显示?

来自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"/>

1 个答案:

答案 0 :(得分:1)

我在两个主题中找到了答案:

  1. Android launch an activity from a broadcast receiver

  2. Activity started from notification opened on top of the activity stack

  3. 在清单中,活动应使用android:taskAffinity声明。 在开始意图时,我必须添加一个标志= Intent.FLAG_ACTIVITY_NEW_TASK