Создание основного действия, которое НЕ появляется в списке запуска

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

    <activity android:name="com.package.test.MyActivity" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>

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

<category android:name="android.intent.category.LAUNCHER" />

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

Может ли кто-нибудь просветить меня о том, как это может быть достигнуто?


person AaronDS    schedule 05.03.2012    source источник
comment
Немногие пользователи найдут вашу активность позже, посетив список Маркета, потому что они не привыкли открывать приложения через Маркет в любое время после первоначальной установки. Это означает, что у них будет один шанс открыть вашу активность — сразу после установки. Многие этого не сделают, потому что не хотят открывать ваше приложение прямо сейчас. Следовательно, даже если это возможно (и, судя по вашему описанию, я подозреваю, что это не так), вы просто просите целую кучу «пищащих» однозвездочных оценок приложения. Я предлагаю вам пересмотреть свой подход.   -  person CommonsWare    schedule 06.03.2012
comment
Идея состоит в том, что активность нужно будет открыть только один раз, и даже в этом случае она не является обязательной (это вспомогательная активность для живых обоев - предполагается, что пользователь уже знает, как применять живые обои, и если они не они не смогут открыть его из маркета, не загромождая их меню запуска).   -  person AaronDS    schedule 06.03.2012
comment
Во-первых, убедитесь, что живые обои можно будет использовать на Android 3.1+ без запуска активности пользователем. Многие вещи теперь отключены в 3.1+, пока они не запустят активность. Во-вторых, подумайте о том, чтобы оставить действие в покое с самого начала и скрыть его от панели запуска, используя PackageManager и setComponentEnabledSetting(), если это практично, учитывая характер ваших обоев.   -  person CommonsWare    schedule 06.03.2012
comment
Ответ CommonsWare — это поведение по умолчанию для многих приложений без запуска, таких как клавиатуры, обои и т. д.   -  person Kirill Rakhman    schedule 06.03.2012
comment
Спасибо, ребята, но пока я выберу решение android.intent.category.INFO.   -  person AaronDS    schedule 06.03.2012


Ответы (1)


Вместо LAUNCHER используйте android.intent.category.INFO. Знайте, что это используется не часто, но примером является дополнительный пакет, такой как анимация Beautiful Widgets, где информационный экран за пределами списка Market полезен после установки приложения, но не будет нанесено вреда, если пользователь никогда не обнаружит эта деятельность.

(См. также этот вопрос.)

person Josh Lee    schedule 05.03.2012
comment
Отлично, как раз то, что мне было нужно. Очень признателен! - person AaronDS; 06.03.2012
comment
@Josh Lee: я буду голосовать за тебя, если ты будешь баллотироваться на выборах модератора :) Отличный ответ - person Manoj Kumar; 04.03.2013
comment
Большое спасибо, искал несколько дней, наконец нашел :) - person unitedartinc; 23.02.2014