销毁活动从BroadcastReceiver开始

时间:2012-09-23 16:33:53

标签: android android-intent android-activity

我从BroadcastReceiver

开始了我的活动
@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, SipCallActivity.class);
    i.putExtra("destination_phone", phoneNumber);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
    context.startActivity(i);
}

按一下按钮完成一段时间的活动后:

Button endCall = (Button) findViewById(R.id.call_btn_terminate_call);
endCall.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            endCall(); //SIP related stuff
            finish();
        }
    });

一切都很好,花花公子。但是,当我尝试通过按应用程序列表中的图标或通过主页按钮从最近的应用程序列表中打开应用程序中的另一个活动时,我总是得到我刚关闭的活动 - SipCallActivity。那是为什么?

我想关闭该活动,除非从我的BroadcastReceiver调用,否则用户永远不会再看到它。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

将标记FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS添加到您的启动意图中,或使用清单中的以下内容将该应用排除在最近:

<activity android:name="<your-activity" android:excludeFromRecents="true" ...

答案 1 :(得分:1)

您需要在调用mainactivity

的意图中添加标记
i.addFlags(intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS| Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET |Intent.FLAG_ACTIVITY_NEW_TASK);

或者

在Mainfest File ::

<activity android:name=".SipCallActivity" android:excludeFromRecents="true">