当我在BroadcastReceiver中打开活动时,隐藏了Android InCallScreen

时间:2012-09-03 08:01:11

标签: android android-intent

确定。我发现很难说清楚。让我试试。

我正在为每次通话使用广播接收器。

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

在onReceive方法中,我正在开始一项活动。

    @Override
    public void onReceive(final Context context, Intent intent) {

            Handler mHandler = new Handler();
            AttendActivity.ctx = context;
            Runnable mUpdateTimeTask = new Runnable() {
                public void run() {
                    // do what you need to do here after the delay
//                  context.startService(new Intent(context, AutoAnswerIntentService.class));
                    context.startActivity(new Intent(context,
                            AttendActivity.class)
                            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

                }
            };
            mHandler.postDelayed(mUpdateTimeTask, 500);
        }       
    }

当应用程序不可见时,此工作正常。但是,当应用程序可见时。我的活动在InCallScreen之上打开。但是当我关闭AttendActivity时。而不是InCallScreen我的应用程序是可见的。 Incallscreen就在它的上面。

你帮我解决这个问题吗? 期望的输出

MyApp - &gt; InCallScreen - &gt; AttendActivity

当前输出 InCallScreen - &gt; MyApp - &gt; AttendActivity

1 个答案:

答案 0 :(得分:0)

我建议您阅读此article。它拥有大量有关Android中的活动,任务,应用程序和流程的信息。

我的猜测是你的AttendActivity具有默认的任务亲和力。这意味着如果显示此活动,那么您的整个任务(很可能是您应用程序的所有活动)将被带到前面。

您可以更改此行为。您需要在Manifest中的活动上安装android:taskAffinity。

例如,您可以在清单中为AttendActivity放置android:taskAffinity =“”。这样当它被带到前面时,它不会用它拖动整个应用程序。