2013-03-28 4 views
6

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

Имя приложения отображается в разделе «Управление приложениями» и его легко удалить.

Итак, теперь я спрашиваю как программиста. Как возможно (если это возможно) установить такое приложение? (без активности или запуска).

ответ

9

Просто удалите все из следующих намерениях фильтров из манифеста:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

Имейте в виду, что с Android 3.1 года, ваше приложение не получит каких-либо передач или быть указаны в любых других местах, где (например, в меню общего доступа), если пользователь не вручную открыл пользовательский интерфейс приложения (основная активность) хотя бы один раз из запуска.

+0

Справедливо. Хороший ответ. – rootpanthera

2

Да, такого рода применение возможно. Вам необходимо создать приложение, которое не имеет активности Launcher в файле манифеста.

Например: - Вы можете зарегистрировать широковещательную передачу для полученной загрузки. Итак, когда устройство загрузится, ваше приложение будет вызываться, хотя у него нет никакого пользовательского интерфейса. Вы можете проверить номер this.

NOTE - Этот вид применения будет работать только ниже 3.1.

+0

Если значок приложения не отображается, как пользователь может открыть приложение? Каков другой способ открыть его? – 2013-03-28 11:12:15

+0

Ответ отредактирован для справки. –

+0

Спасибо за образец. – 2013-03-28 11:19:16

5

Существует еще один способ, который работает даже на Android3.1 +. Вы не можете отключить сам значок, но вы можете отключить один компонент приложения. Таким образом, отключение активности запуска приложений приведет к тому, что ее значок будет удален из пусковой установки.

код, чтобы сделать это просто:

ComponentName componentToDisable = 
    new ComponentName("com.helloandroid.apptodisable", 
    "com.helloandroid.apptodisable.LauncherActivity"); 

getPackageManager().setComponentEnabledSetting(
    componentToDisable, 
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
    PackageManager.DONT_KILL_APP); 

Существует несколько вещей, которые необходимо знать об этом решении:

1-инвалидов компонент не будет спускаться на воду в любом случае

2-другие неинвалифицированные действия будут запускаться из других приложений.

3-приложение может отключать только свой компонент. Существует разрешение «android.permission.CHANGE_COMPONENT_ENABLED_STATE», но он не будет работать, у третьих сторон не может быть такого разрешения.

4-значок будет только исчезать при перезапуске пусковой установки, поэтому при следующей перезагрузке телефона, пусковая установка для перезапуска не рекомендуется.

Таким образом, приложение должно запускаться по крайней мере вовремя.

Ссылка:

Removing an app icon from launcher

+0

Я не согласен с пунктами 1 и 4.Вы можете создать приемник (запущенный из дозвона ex: * # 777 #), который может использоваться как «прокси». Это функция - включить и открыть MainActivity. Я проверил это на 4.2. –

+0

@Tuga Спасибо за ваш ответ. Вы можете объяснить более подробную информацию, пожалуйста? – hasanghaforian

Смежные вопросы