Android应用在主屏幕中创建重复的快捷方式

时间:2016-07-11 12:25:24

标签: android android-studio manifest

我在模拟器(和手机)上运行应用程序,它在主屏幕上创建了2个快捷方式。如果我删除了该应用,则会删除这两个快捷方式。

我的应用已经splash screen然后转到主屏幕,我正在使用android studio。

我认为与<intent-filter>有关,但每次我在运行应用时删除它都会在<activity>上再次自动显示。

清单文件:

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

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="23" />

    <receiver android:name="receiver.NetworkChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >

        <!-- Splash screen -->
        <activity
            android:name="com.example.epicbit.tecnoprolab.SplashScreen"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Black.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.epicbit.tecnoprolab.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

修改 观看此视频,了解我在遵循您的吸烟时会发生什么:

https://vid.me/onhe

3 个答案:

答案 0 :(得分:0)

从MainActivity中删除以下代码

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

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

您的SplashScreen将成为您应用的Root Activity ...因此,仅SplashScreen需要这些参数。

最终结果

<!-- Splash screen -->
<activity
    android:name="com.example.epicbit.tecnoprolab.SplashScreen"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity
    android:name="com.example.epicbit.tecnoprolab.MainActivity"
    android:label="@string/app_name"
    android:theme="@style/AppTheme.NoActionBar" >
</activity>

<强>更新

我检查了你的照片。

我看到您正在更新以下文件:

app/build/intermediates/manifests/full/debug/AndroidManifest.xml

但是,app / build文件是Android Studio放置生成文件的文件夹...

尝试在源代码文件夹中搜索清单。例如:

app/src/... (or any other folder different from build)

答案 1 :(得分:0)

你的清单应该是一个MAIN操作,还有一个LAUNCHER intent-filter,它可以为你的应用程序启动活动

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

仅适用于您的应用程序的root活动。

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

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="23" />

    <receiver android:name="receiver.NetworkChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >

        <!-- Splash screen -->
        <activity
            android:name="com.example.epicbit.tecnoprolab.SplashScreen"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Black.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.epicbit.tecnoprolab.MainActivity"
            android:label="@string/app_name" >

        </activity>
    </application>

答案 2 :(得分:0)

在我的情况下,在应用升级后创建了重复的图标。在此次升级中,我们介绍了Splash Screen。因为我们已经重命名了启动器活动。我们移动了

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

从MainActivity启动屏幕活动。

在某些手机中,重命名活动会创建重复的图标。 奇怪的。重命名活动在这里有所帮助。

可在OnePlus One手机中重现。