Android-приложение создает две иконки запуска - PullRequest
6 голосов
/ 02 января 2012

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

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

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

Эти проблемы сохраняются одинаково во всех моих эмуляторах и устройствах, независимо от того, выключаю ли я телефон, вручную убиваюприложение или удалить / переустановить приложение.Простой Ctrl + Z не работал.Чтобы уточнить - все, что я хотел бы, это вернуться назад, чтобы иметь один значок запуска для нормального запуска моего приложения (вообще ничего особенного не происходит).

Обновление:

Теперь мне дают немедленную силу, приближающуюся к запуску с любой иконки.Я нашел код в двух действиях в моем манифесте, отображая и изменяя вторую строку с .LAUNCHER на .DEFAULT, и это решило мою первоначальную проблему.Тем не менее, мне теперь всегда дают непосредственную силу близко ... теперь есть проблемы (которые я вижу) в моей первоначальной деятельности по запуску ... У меня много проблем, пытающихся это исправить (понятия не имею, что делатьделаю) и начинаю ОЧЕНЬ волноваться!

Обновление 2:

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

Ответы [ 5 ]

24 голосов
/ 02 января 2012

два действия имеют

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

удалить второе

2 голосов
/ 13 сентября 2014

Ну, я столкнулся с той же проблемой.Проблема заключалась в том, что когда я запускал приложение, оно создавало две иконки: одну с именем MyApp, а другую - с SplashActivity.Когда я пытался удалить SplashActivity (именованное приложение), в сообщении с подтверждением говорилось, что

SplashActivity является частью MyApp. Вы действительно хотите удалить?

Изучив некоторые ссылки, мы пришли к выводу, что когда мы помещаем

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

под любое действие, android думает, что это ОСНОВНАЯ точка входа в приложение.И создает значок запуска для этого действия.но имя было сохранено как acctivityName.

Итак, наконец, изменив тег Activity SplashActivity с

 <activity
    android:name=".activities.SplashActivity"
    android:label="@string/title_activity_splash"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
 </activity>

на

<activity
    android:name=".activities.SplashActivity"
    android:label="@string/app_name"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Это решило мою проблему с несколькими значками и средством запускаимя значка в виде ActivityName вместо appName.

2 голосов
/ 02 января 2012

На самом деле Android Launcher отображает все действия с категорией LAUNCHER, а не приложениями.

Если ваше приложение содержит более 1 действия, вы должны использовать действие MAIN и категорию LAUNCHER только для действия по умолчанию (первого экрана) приложения, а не для всех действий, которые вы использовали в приложении. Если вы указали одно и то же для каждого действия в приложении, оно будет отображаться в Android Launcher.

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

0 голосов
/ 10 марта 2016

в файле AndroidMenifest.xml вы должны удалить два или три имени андроида, т.е.

<activity
    android:name=".SplashScreen"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
0 голосов
/ 02 января 2015

В моем случае помогло что-то подобное

Старые строки из файла манифеста

Активность на заставке

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

Основная деятельность

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

И новый

Активность на заставке

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

Основная деятельность

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

Просто удалите в главной активности эту строку ниже

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

И это все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...