Android启动器按启动器中的主页进入默认屏幕

时间:2012-11-02 21:52:27

标签: android android-intent android-launcher android-homebutton

在默认的Android启动器中,在另一个活动中按home将启动启动器。在启动器中再次按home将重置为默认主屏幕页面。我不明白如何做到这一点。无论启动器是否在前台,Android都会发出相同的意图。主页密钥也不能被用户应用程序拦截。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:11)

  

Android发出相同的意图,无论启动器是否在前台。

正确。

  

主页密钥也不能被用户应用程序拦截。

正确。

  

我不明白如何做到这一点。

如果对startActivity()的调用将导致Intent被传递到活动的现有实例,则不会创建新实例(根据定义),并使用{{调用现有实例1}}而不是onNewIntent()

对于主屏幕,通常 主屏幕的活动通常会在清单中使用onCreate()android:launchMode="singleTask",例如:

android:launchMode="singleInstance"

(来自an old launcher in the AOSP

然后,活动可以实施 <activity android:name="Launcher" android:launchMode="singleTask" android:clearTaskOnLaunch="true" android:stateNotNeeded="true" android:theme="@style/Theme" android:screenOrientation="nosensor" android:windowSoftInputMode="stateUnspecified|adjustPan"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME"/> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.MONKEY" /> </intent-filter> </activity> 来执行某些操作。对于上述旧发射器,its onNewIntent() includes

onNewIntent()

如果用户当前正在查看主屏幕活动管理的一组屏幕中的其他屏幕,则可能会将UI动画回默认屏幕。

触发 if (!mWorkspace.isDefaultScreenShowing()) { mWorkspace.moveToDefaultScreen(); } 而不是使用onNewIntent()的另一种方法是,当您通过在android:launchMode中添加适当的标记来调用startActivity()时,有选择地执行此操作,例如Intent

答案 1 :(得分:5)

更具体一点,做

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) !=
            Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) {
        goHome();
    }
}