Почему мое приложение отображается 4 раза на моем устройстве? - PullRequest
5 голосов
/ 31 октября 2010

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

Кажется, что каждый значок представляет действие, и, поскольку мое приложение содержит 3 вкладки (с действиями), первые 3 значка в моем меню переходят к определенному действию, а четвертый значок переводит меня в само приложение

Это мой манифест

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.jameselsey"
      android:versionCode="1"
      android:versionName="1.0">

    <uses-sdk android:minSdkVersion="7" />  
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>    
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />

    <application    android:icon="@drawable/icon" 
                    android:label="@string/app_name" 
                    android:name="com.jameselsey.domain.GlobalState"
                    android:theme="@android:style/Theme.NoTitleBar">

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

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

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

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

        <uses-library android:name="com.google.android.maps" />
    </application>    
</manifest> 

Что я могу сделать, чтобы на моем устройстве была только одна иконка приложения, а не 4?

Спасибо

Ответы [ 3 ]

10 голосов
/ 31 октября 2010

Поскольку у вас есть 4 действия с

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

Это добавляет значок запуска для вашей деятельности.

6 голосов
/ 31 октября 2010

Ответ уже предоставлен, но я просто проинформирую его.В Java приложение будет начинаться с класса, который содержит метод main и который в основном будет одиночной точкой входа для всего приложения.

В Android вы можетезаметили, что в вашем классе Activity нет метода main.Здесь мы используем файл манифеста, чтобы сделать то же самое.Приложение может иметь несколько точек входа, и "android.intent.action.MAIN" указывает, что это действие должно быть основным начальным действием, а категория LAUNCHER говорит, что эта точка входа должна быть указана в панели запуска приложения.После того, как вы выполните действие как LAUNCHER, android предоставит значок приложения и имя для него, и вы, должно быть, заметили, что нажатие на каждый из 4 значков в вашем случае приведет вас к 4 различным действиям.

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

5 голосов
/ 31 октября 2010

удалить intent-filter из последних 3 действий

...