我的Flutter应用程序图标在手机应用列表中没有显示

3

我已经使用Flutter创建了默认的(counter)应用程序,并且它在显示为应用程序列表中的图标方面完美运行,就像任何其他普通应用程序一样。然而,当我继续添加文件,例如插件和Firebase等之后,我重新构建它,应用程序启动了,但应用程序图标没有显示在手机的应用程序列表中。 现在我想知道这是Flutter SDK上的错误还是其他原因导致的。因为以前我使用的是Flutter版本2.2.2,现在我使用的是Flutter 2.5.0。


你尝试过运行“flutter clean”吗?这个问题出现在真机上吗?你尝试在模拟器上运行了吗?有些手机可以从主屏幕删除应用程序,但仍然保留在应用程序文件夹中。 - user12819179
我尝试了flutter clean,但没有任何变化。虽然我还没有在模拟器上尝试过。此外,我已经进入设置,找到了该应用程序并卸载了它,然后重新构建,但仍然没有任何变化。这不是我第一次使用Flutter,这绝对是我以前从未遇到过的新问题。 - Taio
尝试删除pubspec.lock、android和ios文件夹,然后执行“flutter create -i swift -a kotlin”命令。我认为你在Android清单中添加Firebase时移动了一些东西。之后,你应该重新配置其中的Firebase。我没有遇到Flutter 2.5.0的错误,但我已经在Firebase配置方面遇到了一些错误。 - user12819179
你解决了这个问题吗? - Anteino
那个项目被别人(非Flutter)接手了,但我后来创建了其他项目,这不再是问题。当前Flutter版本为2.10.3。 - Taio
实际上,我解决了这个问题并回答了这个旧问题 :) - Anteino
2个回答

6
我想我找到了答案。问题出在 android/app/src/main/AndroidManifest.xml 这个文件里。我认为你需要在 intent-filters 中包含以下标签:
<category android:name="android.intent.category.LAUNCHER"/>

然而,我有一些标签覆盖了这个标签,这就破坏了应用程序抽屉的可见性。现在,我的意图过滤器如下所示,并且一切都正常工作:

        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
            <!-- <action android:name="android.intent.action.VIEW" /> -->
            <category android:name="android.intent.category.DEFAULT" />
            <!-- <category android:name="android.intent.category.BROWSABLE" /> -->
            <!-- <data android:scheme="my.test.app" /> -->
        </intent-filter>

希望这有所帮助。

如果我们需要使用 <action android:name="android.intent.action.VIEW" /> 和 <category android:name="android.intent.category.BROWSABLE" />,该怎么办? - Amit Vaghela
我真的不知道,我是偶然发现的。 - Anteino

3
你提供的清单文件中有一个<intent-filter>,它同时结合了从主屏幕(launcher)启动和通过自定义URL方案访问的意图。
问题在于你将这两个功能合并到了一个<intent-filter>中。Android可能会将此意图过滤器解释为仅用于处理自定义URL方案,而不是一个应该出现在主屏幕上的应用程序。
要解决这个问题,你应该将这两个目的分别放在两个独立的<intent-filter>中。以下是如何操作:
<activity ...>
    <!-- Intent filter for launching the app from the launcher -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    
    <!-- Intent filter for handling the custom URL scheme -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="appname" />
    </intent-filter>
</activity>

欢迎来到Stack Overflow。我看到了你的回答,首先,它看起来像是由ChatGPT等人工智能编写或协助完成的。如果是这样的话,我鼓励你尽快删除它,因为在这里不允许发布由人工智能生成的内容(//meta.stackoverflow.com/q/421831)。更令人困惑的是,你的回答提到了“你提供的清单”,但问题中并没有提到清单。这让我觉得这个回答可能是基于问题和回答的混淆而产生的人工智能的结果。还有其他解释吗?谢谢! - NotTheDr01ds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接