Android 让后退按钮转到发射器
我有一个Android 让后退按钮转到发射器,android,android-intent,splash-screen,Android,Android Intent,Splash Screen,我有一个SplashActivity,当我第一次打开应用程序时,它会打开,这会导致应用程序的maintactivity我想对后退按钮进行编程,使其进入启动器,而不是SplashActivity public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
SplashActivity
,当我第一次打开应用程序时,它会打开,这会导致应用程序的maintactivity
我想对后退按钮进行编程,使其进入启动器,而不是SplashActivity
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
//what goes here??
}
return super.onKeyDown(keyCode, event);
}
或者在从SplashActivity
启动MainActivity
时设置正确的标志来实现这一点
编辑:
我找到了答案的一部分,为了确保SplashActivity永远不会启动,我使用
Intent i=new Intent(SplashActivity.this,MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
我还有三个重定向到MainActivity的Activities
,我想提供一个一致的行为,每次都可以从MainActivity
重定向回启动器
编辑2
MainActivity-->Camera/Gallery-->ImagePreview-->ScannedResults-->图像删除对话框-->MainActivity
我从
MainActivity
按back
,它无法返回到ScannedResults
、Camera
或ImagePreview
,因为用户可能也从ImagePreview
中删除了图像。如果您只有两个activity和MainActivity。在这种情况下,在从SplashActivity启动MainActivity之后,如果只有两个activity SplashActivity和MainActivity,则在MainActivity中调用finish()并重写onBackPressed()。。在这种情况下,在从SplashActivity启动MainActivity之后,如果只有两个activity SplashActivity和MainActivity,则在MainActivity中调用finish()并重写onBackPressed()。。在这种情况下,在从SplashActivity启动MainActivity之后,如果只有两个activity SplashActivity和MainActivity,则在MainActivity中调用finish()并重写onBackPressed()。。在这种情况下,在从SplashActivity call finish()启动MainActivity并覆盖MainActivity中的onBackPressed()和call finish()之后,本质上,您需要从每个活动转到Launcher(我假设它不是主活动,如果不是,请说明)。在这种情况下,每当您出于某个目的启动任何活动时,请在之后立即调用finish(),例如
Intent intent = new Intent(this, WhateverActivityYouWantToCall.class);
startActivity(intent)
//call finish() to end current activity
finish();
编辑:也就是说,如果您希望在按下后退按钮时发生这种情况,您可以覆盖onBackPressed:
@Override
public void onBackPressed() {
Intent quit = new Intent(Intent.ACTION_MAIN);
quit.addCategory(Intent.CATEGORY_HOME);
quit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(quit);
finish();
}
从本质上讲,您希望从每个活动中转到Launcher(我假设它不是主要活动,如果不是,请说明)。在这种情况下,每当您出于某个目的启动任何活动时,请在之后立即调用finish(),例如
Intent intent = new Intent(this, WhateverActivityYouWantToCall.class);
startActivity(intent)
//call finish() to end current activity
finish();
编辑:也就是说,如果您希望在按下后退按钮时发生这种情况,您可以覆盖onBackPressed:
@Override
public void onBackPressed() {
Intent quit = new Intent(Intent.ACTION_MAIN);
quit.addCategory(Intent.CATEGORY_HOME);
quit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(quit);
finish();
}
从本质上讲,您希望从每个活动中转到Launcher(我假设它不是主要活动,如果不是,请说明)。在这种情况下,每当您出于某个目的启动任何活动时,请在之后立即调用finish(),例如
Intent intent = new Intent(this, WhateverActivityYouWantToCall.class);
startActivity(intent)
//call finish() to end current activity
finish();
编辑:也就是说,如果您希望在按下后退按钮时发生这种情况,您可以覆盖onBackPressed:
@Override
public void onBackPressed() {
Intent quit = new Intent(Intent.ACTION_MAIN);
quit.addCategory(Intent.CATEGORY_HOME);
quit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(quit);
finish();
}
从本质上讲,您希望从每个活动中转到Launcher(我假设它不是主要活动,如果不是,请说明)。在这种情况下,每当您出于某个目的启动任何活动时,请在之后立即调用finish(),例如
Intent intent = new Intent(this, WhateverActivityYouWantToCall.class);
startActivity(intent)
//call finish() to end current activity
finish();
编辑:也就是说,如果您希望在按下后退按钮时发生这种情况,您可以覆盖onBackPressed:
@Override
public void onBackPressed() {
Intent quit = new Intent(Intent.ACTION_MAIN);
quit.addCategory(Intent.CATEGORY_HOME);
quit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(quit);
finish();
}
如果您使用
android:excludeFromRecents
将活动从最近的活动中排除,它也将不在后堆栈中,因此用户将无法使用“后退”按钮或从最近的活动手动返回到它。只需编辑您的清单:
<activity android:name=".SplashActivity" android:excludeFromRecents="true" />
编辑
您始终可以摆脱多个活动并切换到片段,这样您将只有一个活动,在最近的时间段中始终可见,但如果使用
android:excludeFromRecents
将活动从最近的时间段中排除,则仍然可以将ie.SplashFragment从后堆栈中删除,所以,用户将无法手动返回到它,既不返回按钮,也不从最近。只需编辑您的清单:
<activity android:name=".SplashActivity" android:excludeFromRecents="true" />
编辑
您始终可以摆脱多个活动并切换到片段,这样您将只有一个活动,在最近的时间段中始终可见,但如果使用
android:excludeFromRecents
将活动从最近的时间段中排除,则仍然可以将ie.SplashFragment从后堆栈中删除,所以,用户将无法手动返回到它,既不返回按钮,也不从最近。只需编辑您的清单:
<activity android:name=".SplashActivity" android:excludeFromRecents="true" />
编辑
您始终可以摆脱多个活动并切换到片段,这样您将只有一个活动,在最近的时间段中始终可见,但如果使用
android:excludeFromRecents
将活动从最近的时间段中排除,则仍然可以将ie.SplashFragment从后堆栈中删除,所以,用户将无法手动返回到它,既不返回按钮,也不从最近。只需编辑您的清单:
<activity android:name=".SplashActivity" android:excludeFromRecents="true" />
编辑
您始终可以摆脱多个活动并切换到片段,这样您将只有一个活动,在最近的活动中始终可见,但如果在后台堆栈中将此代码添加到清单上的SplashActivity中,仍然可以删除ie.SplashFragment:
<activity
android:name=".SplashActivity"
android:noHistory="true" >
将此代码添加到清单上的Splash活动:
<activity
android:name=".SplashActivity"
android:noHistory="true" >
将此代码添加到清单上的Splash活动:
<activity
android:name=".SplashActivity"
android:noHistory="true" >
将此代码添加到清单上的Splash活动:
<activity
android:name=".SplashActivity"
android:noHistory="true" >
如果您想关闭应用程序,您可以使用
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
}
return super.onKeyDown(keyCode, event);
}
但是,如果您只想隐藏应用程序(仍在后台运行),可以使用
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
}
return super.onKeyDown(keyCode, event);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
moveTaskToBack(true);
}
return super.onKeyDown(keyCode, event);
}
希望这会有帮助 如果要关闭应用程序,您可以使用
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
}
return super.onKeyDown(keyCode, event);
}
但是,如果您只想隐藏应用程序(仍在后台运行),可以使用
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
}
return super.onKeyDown(keyCode, event);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
moveTaskToBack(true);
}
return super.onKeyDown(keyCode, event);
}
希望这会有帮助 如果要关闭应用程序,您可以使用
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
}
return super.onKeyDown(keyCode, event);
}
但如果你只是想