Android应用程序开发:创建了两个图标,我只需要一个

Mob*_*now 40 icons android

我正在编写一个Android应用程序,它有一个主要活动和一个子活动.当我在手机上安装应用程序进行测试时,我得到两个图标而不是一个.第一个图标用于主要活动,第二个图标用于子活动.我不希望/需要一个图标的子活动.

有谁知道如何在我的应用程序代码中关闭它,以便只安装主活动的图标?非常感谢您提供的任何信息!

谢谢,MobiKnow

Wor*_*ead 63

您的应用程序清单是否列出了与主启动器匹配的子活动下的intent过滤器?

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
Run Code Online (Sandbox Code Playgroud)

确保您的子活动没有过滤这些意图.

编辑:为了清楚起见,请确保您的子活动中未列出上述行.该意图过滤器让Android系统知道您打算将其列为应用程序的入口点.


Cri*_*vez 22

我们有同样的问题,但我在清单中的代码之前以这种方式修复它

<application
        android:debuggable="true"
        android:allowBackup="true">
        <activity        android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.noupdate.apptest_noupdate.MainActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
Run Code Online (Sandbox Code Playgroud)

请注意,在SplashActivity里面意图是这段代码

<intent-filter>
 <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
Run Code Online (Sandbox Code Playgroud)

我只删除了这个类别

 <category android:name="android.intent.category.LAUNCHER" />
Run Code Online (Sandbox Code Playgroud)

因此,在我删除了splash中的intent-filter类别后,它没有安装两个app图标,但只有一个用于main,代码就像这个通知那样删除了intent-filter类别

<application
        android:debuggable="true"
        android:allowBackup="true">
        <activity     android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

            </intent-filter>
        </activity>
        <activity
            android:name="com.noupdate.apptest_noupdate.MainActivity"
            android:icon="@drawable/ic_launcher"
            android:theme="@android:style/Theme.NoTitleBar"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
Run Code Online (Sandbox Code Playgroud)

它确实有帮助


Xar*_*han 15

它会创建两个App图标,因为您必须已将给定的过滤器添加到两个活动中.见清单.

<category android:name="android.intent.category.MAIN" />
Run Code Online (Sandbox Code Playgroud)

从另一个中删除上述声明.然后你很高兴去.


小智 7

像在其他答案中一样

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER"/>   
Run Code Online (Sandbox Code Playgroud)

是罪魁祸首.但是,在我的清单中,我只有一个具有该意图过滤器的活动.事实证明,我使用的是我构建的库,它在其清单中声明了一个使用该intent过滤器的活动.因此,简而言之,请确保您的应用程序的清单和依赖项(如果有)只有一个带有intent过滤器的活动.


Blu*_*mer 6

我猜想在您的 AndroidManifest.xml 中,您的两个活动都具有 LAUNCHER 意图过滤器。将其从第二个活动中删除,您应该就可以了!