运行应用程序在Android Studio中提供2个应用程序图标

dav*_*vid 37 android android-studio

我在Android Studio中运行应用程序,它在Androi Studio中提供了2个应用程序图标.

此外,我已经从Eclipse迁移到Android Studio,现在我遇到了如何使logcat的颜色与Eclipse相同的问题.

我的问题是,当我运行应用程序时,有2个应用程序图标,当我卸载它时,其中2个已被删除.这在Android Studio中是正常的吗?我发现Android Studio可以从Eclipse复制密钥.

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

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>



    <uses-permission android:name="android.permission.READ_PHONE_STATE" />


    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <!--  Google Map v.2 permissions -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <!--  GCM permissions -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <permission android:name="com.example.gcm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />


    <!--  Writing Persmission -->
    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
    <uses-permission android:name="android.permission.WRITE_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    <uses-permission android:name="android.permission.READ_PROFILE"/>
    <uses-permission android:name="android.permission.READ_CONTACT"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <activity android:name="com.mytrack.ph.SplashActivity"
             android:label="@string/app_name"
             android:noHistory="true" 
             android:screenOrientation="portrait"
             android:theme="@style/splashScreenTheme" >
             <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.mytrack.ph.LoginActivity"
            android:label="@string/app_name" 
            android:screenOrientation="portrait"
           >
        </activity>
        <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/google_map_api_key"/>
        <activity android:name="com.facebook.LoginActivity"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar"
                  android:label="@string/app_name" />
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
        <service android:name="com.my.track.service.MyTrackService"></service>
        <receiver
            android:name="com.my.track.service.MyTrackGcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="com.my.track.service" />
            </intent-filter>
        </receiver>

        <service android:name="com.my.track.service.MyTrackGcmIntentService" />
        <activity android:name="NavigationMenuActivity" 
            android:configChanges="orientation|keyboardHidden" 
            android:screenOrientation="portrait"
            android:launchMode="singleTop"
            android:permission="com.google.android.c2dm.permission.SEND" >
             ></activity>
        <receiver android:name="com.my.track.results.ConnectionChangeReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>
        </receiver>


    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

我虽然这在android studio中很正常.运行应用程序会提供2个启动器图标.PS:

AndroidManifest.xml文件夹中,我使用eclipse导出到gradle构建.

我正在使用Android Studio 0.8.6谢谢.

dav*_*vid 59

我知道了!是的,最后,我必须研究渐变和东西.

实际上我在Project中有2个android项目,一个是库,另一个是主应用程序.

我发现当我导入那些项目时,Android Studio(我将lib从eclipse导出为gradle build)并不关心它是lib项目还是主项目.(如我错了请纠正我 ).

所以唯一让它工作的是删除intent-filter那个lib-android-project.

编辑:@all解决了!感谢大家,我从来不知道还有另一个AndroidManifest.xml,我认为eclipse将其删除了.我认为将它导出到gradle将删除它,因为它被检查为库.

感谢你的帮助.

  • 如果你有这样的属性`<application android:label ="android:icon =">`删除它们`<application>` (2认同)
  • 我刚在有两个活动的应用程序上遇到此问题,在我的第二个活动中删除了intent-filter,它删除了两个应用程序问题! (2认同)

Kit*_*ita 31

<intent-filter>影响创建多个启动器图标是下列操作之一:

  <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 Studio的清单合并将始终将<intent-filter>库项目中的s 组合到主项目的清单中.您可能最终LAUNCHER在合成清单中有多个意图,因此具有多个启动器图标.要避免这种情况,只需LAUNCHER从库项目的清单中删除意图即可.


vic*_*ale 9

您在AndroidManifest上声明了两个intent过滤器,在activity中只使用了一个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)

如果你在AndroidManifest中使用了两个或更多的intent过滤器,那么你将有两个app图标,所以删除它并设置一个intent过滤器.

我觉得这对你很有用.


小智 7

很可能有一个导入的库项目具有此意图过滤器。

1. Open your app manifest
2. At the bottom left click on "Merged Manifest"
3. Search and find which library project has the attribute

      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
4. Remove it and ensure that now the filter is only on your App's <Application >class activity.
Run Code Online (Sandbox Code Playgroud)


小智 6

我同意,因为我做了两个活动(一个用于启动,一个用于主要).在清单中我忘了删除

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

所以当我安装应用程序时,我将有2个应用程序.