安卓应用程序图标在状态栏中。

10

我能在我的应用程序通知栏中创建一个条目,但我想在状态栏中为我的应用程序创建一个图标,该图标显示电池、Wi-Fi、蓝牙和时间等图标。 我已经搜索了相关信息,但是找到的信息仅仅是无法从应用程序中控制,而是需要在构建Android时,在Android源代码的框架目录中添加一些代码才能完成这个功能, 我不知道如何操作。


3
这是一个系统控制,基于源代码的控制 :( 如果不编辑源代码,无法实现这个控制 :( - Manoj Kumar
是的Manoj,我正在构建源代码本身,但是不知道如何为我的应用程序制作图标,甚至没有线索... - linuxD
尝试获取最近泄露的SGS2果冻豆ROM,其中包含这些类型的控件。可能会对您有所帮助 :) - Manoj Kumar
这件事情只能通过源代码实现,不能在外部进行更改,因为它受到Android操作系统的保护,不允许外部更改。 - Usman Kurd
这里有一个疑问,如果我在我的安卓平板上下载像utorrent这样的应用程序,我会在电池图标旁边得到一个图标,所以他们只是在应用程序中维护图标,可能不需要在源代码中进行更改。 - linuxD
我不知道你是否已经解决了这个问题,但是它绝对是可能的 - 免费的应用程序Widgetsoid可以将电池电量图标持久地放置在通知栏中。 - Matt Taylor
1个回答

2
抱歉,我没有足够的声望将此添加为评论,但您是否查看过类似的问题?您可以为所需的图标添加可绘制资源,并在通知上设置标志,这样应该允许图标保留在状态栏中。像这些问题的答案所描述的那样,FLAG_NO_CLEARFLAG_ONGOING_EVENT可以让您使图标出现在状态栏中。 如何在应用程序运行时(包括后台)显示状态栏中的图标? 控制Android状态栏图标 如果您有完整的AOSP签出,我建议检查StatusBarManager服务。当显示通知时,通知使用此服务内部的回调。还有一个绑定器接口,允许设置图标。
在 /frameworks/base/services/java/com/android/server/StatusBarManagerService.java 和 /frameworks/base/core/java/com/android/internal/statusbar/IStatusBarService.aidl 中,有以下代码:
void setIcon(String slot, String iconPackage, int iconId, int iconLevel, String contentDescription);
void setIconVisibility(String slot, boolean visible);
此外,在 /frameworks/base/core/res/res/values/config.xml 文件中也有相关配置。
   <item><xliff:g id="id">ime</xliff:g></item>
    <item><xliff:g id="id">sync_failing</xliff:g></item>
    <item><xliff:g id="id">sync_active</xliff:g></item>
    <item><xliff:g id="id">gps</xliff:g></item>
    <item><xliff:g id="id">bluetooth</xliff:g></item>
    <item><xliff:g id="id">nfc</xliff:g></item>
    <item><xliff:g id="id">tty</xliff:g></item>
    <item><xliff:g id="id">speakerphone</xliff:g></item>
    <item><xliff:g id="id">mute</xliff:g></item>
    <item><xliff:g id="id">volume</xliff:g></item>
    <item><xliff:g id="id">wifi</xliff:g></item>
    <item><xliff:g id="id">cdma_eri</xliff:g></item>
    <item><xliff:g id="id">data_connection</xliff:g></item>
    <item><xliff:g id="id">phone_evdo_signal</xliff:g></item>
    <item><xliff:g id="id">phone_signal</xliff:g></item>
    <item><xliff:g id="id">battery</xliff:g></item>
    <item><xliff:g id="id">alarm_clock</xliff:g></item>
    <item><xliff:g id="id">secure</xliff:g></item>
    <item><xliff:g id="id">clock</xliff:g></item>

这些是默认添加到状态栏的插槽值。
希望能有所帮助。

感谢您的帖子。但是在您提供的两个链接中,它们都在讨论状态栏中的应用程序图标,但是使用通知管理器来处理它,我认为这是两个不同的功能,并由不同的管理器控制。 - linuxD
我刚刚重新阅读了你的问题几遍,所以你是想在状态栏右侧添加一个图标吗?我编辑了另一种可能有用的替代方案。 - dudebrobro
是的!Swain,这可能会有帮助,我想把图标放在右下角。我会尝试一下。 - linuxD
@linuxD,你能分享一下代码/步骤吗?就像你尝试的那样。我也在做这个功能。只是想看看它如何实现。谢谢。 - user755499

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