Как избежать загрузки домашнего экрана перед открытием стартового приложения в Android?

У меня есть приложение, которое я хотел бы представить как первый экран, который пользователь видит после загрузки на устройстве Android. В настоящее время приложение прослушивает android.intent.action.BOOT_COMPLETED и запускается автоматически (как описано здесь). Все хорошо и хорошо.

Проблема в том, что почти всегда домашний экран виден примерно за секунду до запуска моего приложения. Я знаю, что могу заменить приложение запуска своим собственным, но моя цель состоит в том, чтобы представить этот начальный экран приветствия, не мешая пользователю выбрать пользовательскую программу запуска. (Я знаю о проблемах UX, связанных с навязыванием экрана пользователю, сейчас я просто смотрю на то, что возможно.)

Итак, мой вопрос: есть ли способ сделать это? Возможно, чтобы прервать самый первый запуск главного экрана или убедиться, что мое приложение отображается первым? Если нет, можно ли создать приложение запуска, которое отображает этот экран только при загрузке и впоследствии перенаправляет на выбранное пользователем средство запуска или домашнее приложение? Моя догадка состоит в том, чтобы получить категорию Intent.CATEGORY_LAUNCHER, представить экран (если он еще не был) или, если нет, отправить другое намерение, чтобы открыть настоящий лаунчер... опять же, я не уверен, возможно ли это.

Помощь приветствуется!

РЕДАКТИРОВАТЬ: например, это приложение имеет то же самое проблема при использовании: автоматически запускаемое приложение появляется после главного экрана.


person Austin    schedule 16.07.2013    source источник
comment
Это приложение предназначено для публичного выпуска или для внутреннего использования?   -  person Waza_Be    schedule 16.07.2013
comment
Почему? Что бы это изменило с точки зрения того, что здесь можно сделать?   -  person Austin    schedule 17.07.2013
comment
Мне просто любопытно узнать о таких приложениях и о том, почему разработчики так усердно пытаются сломать потенциальный пользовательский опыт, поэтому я написал в комментарии, извините, если я вас раздражал.   -  person Waza_Be    schedule 17.07.2013
comment
Нет, я не злился, просто надеялся, что ты знаешь что-то, что может помочь. В идеале это то, что пользователи могут увидеть один раз, а затем отключить, если они этого не хотят — я просто хочу, чтобы первый опыт просмотра этого экрана был плавным.   -  person Austin    schedule 17.07.2013
comment
Вы нашли какое-либо решение для этого?   -  person IceDevil    schedule 01.10.2013


Ответы (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 спросит вас, хотите ли вы сделать приложение своим домашним экраном.

Надеюсь, это сработает для вас.

person Machado    schedule 08.05.2014

Добавьте эти две строки в существующую активность запуска, обычно 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>
person edgar_wideman    schedule 03.05.2021