在Android中打开启动应用程序之前如何避免主屏幕加载?

时间:2013-07-16 19:42:33

标签: android android-intent homescreen

我想将一个应用程序呈现为用户在Android设备上启动后看到的第一个屏幕。目前,该应用程序侦听android.intent.action.BOOT_COMPLETED,并自动启动(如here所述)。一切都很好。

问题是,在我的应用程序启动之前,主屏幕几乎总是可见一秒钟。我知道我可以用自己的应用程序替换启动器应用程序,但我的目标是在不干扰用户选择自定义启动器的情况下显示此初始欢迎屏幕。 (我知道用户强行屏幕的UX问题,现在我只是在看可能的事情。)

所以我的问题是:有办法做到这一点吗?也许是为了打断首次启动主屏幕,或者确保我的应用程序首先出现? 如果没有,是否可以创建一个仅在启动时显示此屏幕的启动器应用程序,然后重定向到用户选择的启动器或家庭应用程序?我的预感是接收Intent.CATEGORY_LAUNCHER类别,显示屏幕(如果它还没有)或者如果没有发送另一个意图打开真正的发射器...再次我不确定这是否可能。

帮助表示赞赏!

编辑:例如,如果使用this app则会出现同样的问题:自动启动的应用在主屏幕之后出现。

2 个答案:

答案 0 :(得分:2)

终于找到了解决方案,而且非常简单。

您所要做的就是将这些行添加到AndroidManifest接收器中:

 <receiver android:name="com.dannywind.delphi.BootReceiver"
                  android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
           <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                 <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.HOME"/>
                <category android:name="android.intent.category.DEFAULT"/>
          </intent-filter>
        </receiver>

然后,当您下次打开应用时,Android系统会询问您是否要将应用程序设为主屏幕。

希望它适合你。

答案 1 :(得分:1)

将这两行添加到您现有的启动活动中,通常是 MainActivity、intent-filter。

  <category android:name="android.intent.category.HOME"/>
  <category android:name="android.intent.category.DEFAULT"/>

应该像下面的例子...

    <activity android:name=".MainActivity">
        <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.LAUNCHER" />
        </intent-filter>
    </activity>