Я стараюсь добавить приветственное руководство для пользователей, которые устанавливают приложение впервые. Это действие нужно объявить как Основное в Manifest (или я что-то упустил?). Но если я выберу любое другое действие, кроме основного (которое является фактическим приложением), ярлыки приложений (Android 7.1) больше не будут работать. Однако интересно, что ярлыки по-прежнему доступны в пользовательских программах запуска (Apex, Nova). Есть идеи?

0
IPS 27 Ноя 2016 в 21:08

2 ответа

Лучший ответ

Спасибо за ответы CommonWare! Ваши высказывания помогают мне найти ответ. Итак, я хочу запустить приложение, которое показывает экран-заставку, а затем учебник приветствия. Кроме того, приложению нужны рабочие ярлыки на главном экране, а также только один значок запуска. Итак, сначала я объявляю экран-заставку основным в Manifest.xml:

        <activity
        android:name=".SplashActivity"
        android:noHistory="true"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data
            android:name="android.app.shortcuts"
            android:resource="@xml/shortcuts" />
    </activity>

Затем приветственное (учебное) действие:

        <activity
        android:name=".IntroActivity.WelcomeActivity"/>

После этого в SplashActivity.class проверяем первый запуск:

public static final String FIRST_APP_LAUNCH = "com.ips.test";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        if (isFirstAppLaunch()) {
            setFirstAppLaunch(false);
            startActivity(new Intent(this, WelcomeActivity.class));
        } else {
            startActivity(new Intent(this, MainActivity.class));
        }
        finish();
    }

private boolean isFirstAppLaunch() {
    SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
    return preferences.getBoolean(FIRST_APP_LAUNCH, true);
}

private void setFirstAppLaunch(boolean value) {
    SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean(FIRST_APP_LAUNCH, value);
    editor.apply();
}

}

Конечный результат такой, как я хотел: запускать приложение с экраном-заставкой, затем запускать учебное пособие «Добро пожаловать». Следующий запуск вызовет экран-заставку, который продолжит основное действие (само приложение). Когда пользователь нажимает ярлык на главном экране, он получает ярлыки, а в Launcher у него будет только один ярлык приложения.

0
IPS 28 Ноя 2016 в 18:40

(почти все) приложения Google имеют приветственное руководство, а также ярлыки для запуска. Я не понимаю, как они это сделали?

Приветственное руководство не обязательно должно быть мероприятием. Это может быть какое-то другое представление (например, фрагмент).

Приветственное руководство, даже если это другое действие, не обязательно должно быть действием средства запуска . Действие программы запуска может определить, что это первый запуск, и запустить учебную деятельность.

0
CommonsWare 28 Ноя 2016 в 16:50