Android Studio应用重复安装求助:AndroidManifest.xml<intent-filter>重复
解决Android应用安装后出现两个启动图标(看似重复安装)的问题
你完全猜对了!问题的根源就在你的AndroidManifest.xml配置里——你给MainActivity和IntroActivity都添加了包含android.intent.action.MAIN和android.intent.category.LAUNCHER的<intent-filter>。
Android系统会把每个带有这两个属性组合的Activity识别为独立的应用启动入口,所以才会在启动器里显示两个图标,看起来像是安装了两次应用,实际是同一个应用有两个启动入口。
修复方案
只需要保留一个Activity的MAIN+LAUNCHER过滤器,另一个Activity去掉这个过滤器即可。比如如果你的需求是先展示启动页IntroActivity,再跳转到主页面MainActivity,可以这样修改配置:
<?xml version="1.0" encoding="utf-8"?> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <!-- 唯一的启动入口:IntroActivity --> <activity android:name=".IntroActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 主页面Activity,不需要启动器入口 --> <activity android:name=".MainActivity" /> </application>
补充:启动页跳转逻辑(可选)
如果需要从IntroActivity自动跳转到MainActivity,可以在IntroActivity的代码里添加跳转逻辑:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_intro); // 示例:延迟2秒后跳转到主页面 new Handler(Looper.getMainLooper()).postDelayed(() -> { startActivity(new Intent(IntroActivity.this, MainActivity.class)); finish(); // 关闭启动页,避免返回键回到这里 }, 2000); }
为什么会出现这个问题?
简单解释下这两个属性的作用:
android.intent.action.MAIN:标记该Activity是应用的主入口,即应用启动时首先打开的页面android.intent.category.LAUNCHER:告诉系统把这个Activity的图标显示在启动器的应用列表里
一个应用只需要一组这样的配置,多了就会生成多个启动图标,造成“重复安装”的假象。
内容的提问来源于stack exchange,提问作者Jiu Lee
相关产品推荐
相关产品推荐

