我正在开发一个应用程序,当用户按下关闭按钮时我需要关闭它,当我从另一个调用启动器活动而不是启动时,我设法通过使用finish()函数使其工作。但是,当我再次尝试打开应用程序时,它会自动关闭。
LoginActivity(关闭按钮所在的应用程序):
public static final String closeKey = "closeKey";
//I cut off the entire onCreate function to show only the close app code
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.putExtra(closeKey,"closeApp");
startActivity(i);
finish();
}
});
你可以看到我做的是我发送了一个关于意图的额外元素,这将向我的首发活动表明我希望该应用关闭。
LoadingActivity(入门应用):
Bundle extras = getIntent().getExtras();
if(extras == null){
executeAnim();
}else{
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
finish();
}
LoadingActivity检查intent上是否有任何额外内容,如果没有,它将触发加载动画并转到LoadingActivity,如果有一个额外的元素,它将关闭活动,因为它表明你想要关闭它。
答案 0 :(得分:0)
我找到了一种让它工作的方法,不得不在LoadingActivity中为if / else添加一些验证:
Bundle extras = getIntent().getExtras();
if(extras == null){
executeAnim();
}else if (extras.getString(LoginActivity.closeKey) == null){
executeAnim();
}else if (extras.getString(LoginActivity.closeKey) == ""){
executeAnim();
}else {
try{
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
finish();
}catch (Exception ex){
ex.printStackTrace();
}
}