【问题标题】:How to create a Notification \ status bar icon on the right side?如何在右侧创建通知\状态栏图标?
【发布时间】:2013-08-23 09:18:09
【问题描述】:

好吧,我看到很多人只是通过说

来驳回这个问题

"它是为操作系统组件保留的"

“它需要访问源”

好吧,我可以访问源代码,并且可以将我想要的任何应用程序或小部件设置为系统应用程序。那么现在我将如何让我的小部件在右侧显示其通知?

编辑: 好的,人们正朝着错误的方向前进,所以我在这里添加上下文。 . . 看看你的手机。 . .你一直在手机右侧看到Wi-Fi信号和电话信号。我希望我的信号也在那里显示。 . .连同系统信号。 .我公司正在制造的平板电脑中有一个新的硬件芯片,我必须像手机信号一样不断地显示它的信号强度。它将被集成到平板电脑的 Android 源代码中。

【问题讨论】:

  • 你说的是如何制作一个Android TABLET风格的状态栏?
  • 没有。 . .看看你的手机。 . .您一直在手机右侧看到 wifi 信号和电话信号。我希望我的信号也在那里显示。 . .连同系统信号。 .我的公司正在制造的平板电脑中有一个新的硬件芯片,我可以像手机信号一样不断显示其信号强度。它将被集成到 android 源中。
  • 浏览量这么多,没有答案。 . .有人可以投票这个问题,让人们觉得有必要回答吗?或者赏金是如何运作的??
  • 嘿,如果你解决了这个问题,请分享一个 sn-p
  • Google 日语输入法在右侧显示 A 或あ 图标。它不是系统应用程序,而只是您可以从 Play 商店下载的普通应用程序。它适用于 4.4.2 三星设备和 5.1.1 Nexus 设备。所以一定有某种API。

标签: android notifications statusbar android-source


【解决方案1】:

您可能需要参考Android手机状态栏源码,https://android.googlesource.com/platform/frameworks/base/+/android-4.3_r3.1/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

然后看看类似的方法

addIcon
updateIcon
removeIcon

这不是一件容易的事,因为你必须自己添加很多东西。

【讨论】:

  • 终于有个好线索了。 . tnx 伴侣 :)
  • @PrinceChampappilly 这个答案有什么进展吗? valathum nadakkumo?
  • @VishnudevK vallathum nadakuvo ennu chodicha 。 . .是的,这就是答案。 . .但是您需要在 android 框架中添加您的自定义侦听器。我所做的是拉下双卡手机的代码,并用我的自定义通知替换第二个 sims 信号通知。 .这样我只需要在代码中编辑该实例。我没有完成整个过程。 . .中途我被重新分配到另一个项目。
  • 我想问一下你是怎么回答这个问题的?我的意思是你是研究了整个 android 源代码还是使用了工具来搜索代码?
  • @DADi590 这是很久以前的事了。不幸的是,我无法检查或记住。
【解决方案2】:

你需要修改几个地方:

framework/base/core/res/res/values/config.xml,添加一个槽在: <string-array name="config_statusBarIcons">

然后是frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java:

mService.setIcon("<your slot name>", R.drawable.yourlogo, 0, null);
mService.setIconVisibility("<your slot name>", setVisible);

主要是这样,我相信您可以通过一些试验和错误自行解决其余的问题。

【讨论】:

    【解决方案3】:

    我有一个简单的想法,即:

    在清单中将 android 屏幕方向声明为横向 并像纵向模式的横向设计 让您的应用在横向模式下看起来是纵向的。

    【讨论】:

    • 哈哈。 .这仅在应用程序内部有效。 . .我希望这可以在小部件按钮按下时起作用,以便即使在主页上也始终可见。 . .顺便说一句,好把戏:P
    • 你需要在某种程度上修改Android操作系统,但由于Android是开源的,这不是问题。问题是将它安装在手机上 - 如果您已经注意到,唯一拥有自定义 UI 的公司也是手机制造商,因此他们可以在手机上安装它。
    • 我正在制造平板电脑,我已经在我的平板电脑上启动并运行了我的 android 源代码。 .我只想知道我需要编辑源的哪一部分来将我的信号栏添加到通知部分。
    • 这就是我标记android-source的原因,只有有编辑android源经验的人才能帮助我。 . .不过你的努力:)
    【解决方案4】:
    public class GCMIntentService extends GCMBaseIntentService {
    
    public static final String PROJECT_ID = "4898989797";
    private static final String TAG = "GCMIntentService";
    ModelNotificationMessage modelNotificationMessage;
    
    public GCMIntentService() {
        super(PROJECT_ID);
        Log.d(TAG, "GCMIntentService init");
    }
    
    @Override
    protected void onError(Context ctx, String sError) {
        // TODO Auto-generated method stub
        Log.d(TAG, "Error: " + sError);
    
    }
    
    @Override
    protected void onMessage(Context ctx, Intent intent) {
    
        Log.d(TAG, "Message Received");
    
        String message = intent.getStringExtra("message");
    
        Log.d(TAG, "Message Received" + message);
    
        sendNotification(message);
        Intent broadcastIntent = new Intent();
        broadcastIntent.setAction("GCM_RECEIVED_ACTION");
    
        broadcastIntent.putExtra("gcm", message);
    
        ctx.sendBroadcast(broadcastIntent);
    }
    
    
    
    
     private void sendNotification(String message) {
                // this
                String ns = Context.NOTIFICATION_SERVICE;
                NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
    
                int icon = R.drawable.notification;
                CharSequence tickerText = message; // ticker-text
                long when = System.currentTimeMillis();
                Context context = getApplicationContext();
                CharSequence contentTitle = modelNotificationMessage.getKey();
                CharSequence contentText = message;
                Intent notificationIntent = null;
                int NOTIFICATION_ID = 9999;
    
    
    
                    NOTIFICATION_ID = CommonVariable.notification_message;
                    notificationIntent = new Intent(this, ViewMessages.class);
                    contentText = arrayList.get(0).getDescription();
                    tickerText = arrayList.get(0).getDescription();
    
                // and this
                PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                        notificationIntent, 0);
                Notification notification = new Notification(icon, tickerText, when);
                // Play default notification sound
                notification.defaults |= Notification.DEFAULT_SOUND;
                notification.setLatestEventInfo(context, contentTitle, contentText,
                        contentIntent);
                mNotificationManager.notify(NOTIFICATION_ID, notification);
            }
    

    【讨论】:

    • 这不是他要找的,他希望通知栏中的图标显示在右侧。
    • 通知通知 = new Notification(icon,tickerText, when);请在上面的代码中找到这一行。这一行是状态栏中通知的显示图标。
    • 这将创建一个默认通知,检查developer.android.com/reference/android/app/Notification.html
    • dipali 这是在左侧创建一个作为简单通知。 . .我知道这个 。 . .我们想要的是把它连同信号强度和电池图标放在右侧
    • 它是显示通知的内置功能。
    【解决方案5】:

    我在这个论坛上找到了一些关于你的问题的相关信息......

    http://forum.kde.org/viewtopic.php?t=107601

    --美好的一天

    【讨论】:

    • 我在找安卓通知栏。 .不是那个:P
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多