Android 销毁从广播接收器启动的活动
我从Android 销毁从广播接收器启动的活动,android,android-intent,android-activity,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.F
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
调用,否则用户不应再看到它。我怎样才能做到这一点呢?要么将该标志添加到您的启动意图中,要么在清单中使用以下内容将该应用程序从最近的应用程序中排除:
..
您需要在调用mainactivity的意图中添加标志
或
在Mainfest文件中::
<activity android:name=".SipCallActivity" android:excludeFromRecents="true">
是的,这很有效。我使用了显式方法。顺便问一下,有没有办法让其他活动成为历史?我启动了“手动活动”,用主页按钮导航离开。BroadcastListener中的活动已启动并完成-缺少最近活动中的应用程序。我想您已经得到了答案。按照vikalp的说法,实用主义地设置标志,而不是清单。因为您希望在仅广播的情况下使用此行为,而不总是这样。那么,该活动将仅从广播启动,所以manifest param是完美的。除非有我不知道的副作用。
<activity android:name=".SipCallActivity" android:excludeFromRecents="true">