我想这是一个基本的问题。 是否有任何选项可以使用意图停止活动。
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:5554"));
startActivity(intent);
这是我的代码。 我想制止这种行为(这意味着,我想放弃这个呼叫),如果用户是忙什么。 我只要做什么? 我尝试这样做:
if (condition) {
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:5554"));
startActivity(intent);
}else {
this.finish();
}
但是没有用的。 没有任何人有一个建议?
我前几天有这个问题,我很高兴地告诉你,我已经找到了解决的办法。
首先,你要停在添加此活动AndroidManifest.xml
:
android:launchMode="singleTop"
我将使用一个CheckBox实例。 当它的检查活动开始,取消选中将杀死活动时。
实施例活性A被调用活动B,然后使用意图杀死它。
应把代码放在一个:
checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(A.this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
if (enable.isChecked()) {
intent.putExtra("keep", true);
startActivity(intent);
}
else
{
intent.putExtra("keep", false);
startActivity(intent);
}
}
});
代码被放入B:
boolean keep;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.B);
intent = this.getIntent();
boolean keep = intent.getExtras().getBoolean("keep");
if(keep==true)
{
//execute your code here
}
}
@Override
protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
keep = intent.getExtras().getBoolean("keep");
if(keep==false)
{
B.this.finish();
}
}
说明:这是什么通常做的就是,当复选框被选中它调用的活动,并传递一个布尔值,如果这是真的活性保持活力,并带到前台。 现在,如果你没有通过标志singleTop
那么这个活动的许多实例将被创建。 singleTop
确保只有相同的实例被调用。 现在,当该复选框不选中被传递用于保持一个新值,其在B.验证如果未选中,活动A将被传递false,因此B,从所述内终止自身onNewIntent()
函数。
PS - 您可以从另一个活动结束活动B了。 只需使用如果其他活动是C:
Intent intent = new Intent(C.this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("keep", false);
startActivity(intent);
您可以关闭Play商店的后台数据,而对没有进入Play商店。它会简单地说,“不能加载”播放服务,这是我发现阻止意图的唯一途径