2010-10-30 73 views
5

当我将应用程序安装到设备或模拟器上时,它会在应用程序菜单中多次出现,在我的情况下,我会得到4个图标显示我的应用程序名称。为什么我的应用程序在我的设备上出现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?

感谢

回答

6

答案已经提供,但我只是简要介绍它删除intent-filter。在Java中,应用程序将从包含主方法的类开始,并且基本上是整个应用程序的入口点。

在Android中,您可能已经注意到Activity类中没有主要方法。这里我们使用Manifest文件来做同样的事情。一个应用程序可以有多个入口点,"android.intent.action.MAIN"表示这个活动应该是主要的开始活动,并且LAUNCHER类别表示这个入口点应该列在应用程序启动器中。一旦你做了一个活动LAUNCHER android提供了一个应用程序图标和名称,你一定注意到,点击你的案例中的4个图标中的每一个会带你到4个不同的活动。

底线是如果我们的应用程序不需要多个入口点,您不必使用它。

+0

最具描述性的答案,但对其他人的+1。谢谢 :) – Jimmy 2010-10-31 16:59:13

10

因为你有4个活动,

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

,增加了您的活动的启动图标。

+0

谢谢你,这帮了我很多! – 2014-09-18 14:52:32

相关问题