安卓应用图标未显示

28

我刚刚花费了数小时为我正在开发的Android应用程序制作一个图标,但是无法在模拟器中显示该图标。

我已将其放置在res/drawable-hdpi、res/drawable-mdpi和res/drawable-ldpi中,并按照http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html中定义的相应大小进行调整。

清单包含以下行:

 <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
任何想法为什么它没有显示出来?

你是否正确命名了它?假设您没有更改清单,那么默认图标称为icon.png,是一个Android图标。只需用您自己的图标替换此图标即可。 - f20k
你看到了什么?有出现任何错误吗? - bigstones
我通过重新启动设备解决了这个问题。 :) - Allen
对我来说,解决方案是更改启动器的主题,它已经缓存了开发图标。 - Cr4xy
13个回答

32

我想对@Britton Pentakill和@arnav bhartiya的答案进行详细阐述,因为他们的答案帮助我解决了我的问题。我在我的MainActivity中添加了更多操作,因为Android Studio提示“App无法被Google索引”,而且我也希望它可以被索引。

错误的AndroidManifest.xml

<intent-filter>
  <action android:name="android.intent.action.MAIN"/>
  <category android:name="android.intent.category.LAUNCHER"/>
  <action android:name="android.intent.action.SEND"/>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:scheme="https"
        android:host="siara.cc"
        android:pathPrefix="/CrossCalc" />
 </intent-filter>

因此,当我发布我的应用时,人们在他们的设备上找不到我的应用图标,在Play控制台安装后也没有“打开”按钮,即使它已经通过审核并发布到Play商店(这需要7天时间)。

然后当我阅读了他们的答案后进行更正,现在我能够看到打开我的应用程序的图标:

更正:

<intent-filter>
  <action android:name="android.intent.action.MAIN"/>
  <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<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="https"
    android:host="siara.cc"
    android:pathPrefix="/CrossCalc"/>
</intent-filter>

2
对我来说很有效!伙计们,如果您没有正确配置清单文件,那么您的应用程序可能不稳定。并且在应用程序落地页上可能没有安装按钮Play商店! - Ucdemir
这也是我第一次遇到这个。 - Community
1
非常感谢这个解决方案,它也帮助了我。 - Azhar Ali
1
工作得像魔术一样。谢谢。 - Ganesh Katikar

28
  1. 确保将图标存储为icon.png在这些文件夹中。
  2. 确保安卓具有drawable/icon资源。通过查看您的gen/R.java文件并在内部类drawable中看到public static final int icon = 0x....来检查此内容。
  3. 尝试清理项目构建,并卸载您手机/模拟器上的任何现有版本,然后重新安装新版本。

1
图标的名称不是icon.png,而且我把它放错了位置(没有替换默认图标)。谢谢大家! - Dan
10
我应该补充说明的是,它不一定要被称为icon.png,但名称必须与你在android:icon="@drawble/..."行中选择的相匹配。 - Jems
1
我想强调第三步“清理项目构建”的一部分:确保您单击Project/Clean...并清理您的项目。在我的情况下,这样做就可以了! - Dunken
3
@Jems,由于你的回答得到了很多赞同,你能否添加以下提示:确保 MAIN 和 LAUNCHER 的 intent-filter 不与其他 intent-filter 混合在一起。 - Win Myo Htet

12

请注意Win Myo Htet在被接受的答案上的评论,他解决了我的问题。

Jems,既然您的回答得到了这么多赞,能否也加上以下建议:确保MAIN和LAUNCHER的intent-filter不与其他intent-filter混合。- Win Myo Htet Dec 6 '15 at 5:47

混合”是关键词。我在AndroidManifest.xml文件中有一个意图,用于防止所有文件类型在文件选择中可用。虽然它从第二个答案开始,但它包含了文件选择的额外意图。这导致安装应用时Android无法安装我的图标。我想发布这篇文章,以防其他人遇到这个问题,因为Win My Htet的卓越建议很容易被忽视,因为它本质上只有一个词“混合”。


感谢你指出这个问题,Britton。正是我遇到的问题。 - Peter Machowski
2
是的,那也是我的问题。谢谢!已点赞。请确保只有MAIN和LAUNCHER意图。否则,应用程序图标将不会显示在手机上。 - ONE

5

请确保您的启动Activity的Intent名称为MAIN,即:

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

此外,将图标添加到您的Drawable文件夹中,然后在清单文件的应用程序区块中引用它。
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

+1 鼓励大家关注他们的 Manifest 文件。由于该文件配置不当,我曾经遇到过非常棘手的图标问题。 - Shadoninja

2
在我的情况下,在所有mipmap文件夹中分配了ic_launcher和ic_launcher_round之后,我必须删除“mipmap-anydpi-v26”文件夹才能显示应用程序图标。

1

最近我也遇到了类似的问题,最终发现有两个原因:

  • 文件扩展名:为了更加保险,建议始终使用.png格式。某些其他格式在特定设备上也可以使用(例如,在我的Infinix note 4手机上使用.jpg图标仍然可以显示),但.png文件可以保证在所有设备上正常工作。

  • 存储位置:您的图标文件应该位于drawable文件夹中。记得仔细检查您的清单文件是否指向您保存的drawable位置。

希望这可以帮助你..祝编程愉快!


1

要显示图标,您需要在主题样式中替换@drawable,然后它就会起作用。在此输入图像描述


1
<manifest ...>

    <application
        android:icon="..."
        android:roundIcon="..."/>
</manifest>

在应用程序清单中,有两个属性:icon和roundicon。一个用于调试,另一个用于发布。

1
它不是一个用于调试,另一个用于发布的版本,它的工作方式如下: 如果您的手机主题具有方形图标,则它将从属性“icon”中获取应用程序图标;如果您的手机主题具有圆形图标,则它将从属性“roundIcon”中获取应用程序图标。 - syed dastagir
移除圆形图标为我铺平了道路,但正如Syed所说,这并不是用于调试/测试。 - Vivek

0
如果你正在运行 Android 5.0,只需将以下代码添加到 MainActivity 的 onCreate 方法中即可:
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

这可能对你有所帮助。


0
在意图过滤器标签中,只允许使用动作和类别标签,不允许其他标签。如果在意图过滤器标签中出现任何错误的标签,则无法在移动电话中打开和查看应用程序。
<intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
<!--                <action android:name="android.intent.action.SENDTO" />-->
<!--                <data android:scheme="mailto" />-->
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

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