是否可以从应用程序中检索状态栏图标?

时间:2018-01-18 17:33:01

标签: android

我能够访问提供其包名并使用PackageManager.getApplicationIcon()的应用程序的图标,但我无法在文档中找到状态栏图标的方法(小图标,出现通知时出现。)

有可能吗?

2 个答案:

答案 0 :(得分:1)

我认为您可以获得通知标题,文字和通知。 从StatusBarNotification,您可以statusBarNotification.getNotification()获取通知,并通过https://developer.android.com/reference/android/app/Notification.html#getSmallIcon()

获取图标
public void onNotificationPosted(StatusBarNotification sbn) {


    String pack = sbn.getPackageName();
    String ticker = sbn.getNotification().tickerText.toString();
    Bundle extras = sbn.getNotification().extras;
    String title = extras.getString("android.title");
    String text = extras.getCharSequence("android.text").toString();

    Log.i("Package",pack);
    Log.i("Ticker",ticker);
    Log.i("Title",title);
    Log.i("Text",text);

    Intent msgrcv = new Intent("Msg");
    msgrcv.putExtra("package", pack);
    msgrcv.putExtra("ticker", ticker);
    msgrcv.putExtra("title", title);
    msgrcv.putExtra("text", text);

    LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv);


}

您可以获得更多信息@ http://developer.android.com/reference/android/service/notification/NotificationListenerService.html

注意:此方法仅适用于API 18。

进一步调查我发现了另一个用户关于如何使用NotificationListenerService的示例:

https://github.com/kpbird/NotificationListenerService-Example

AccessibilityService用于处理辅助功能:

  

辅助功能服务在后台运行并接收回调   在触发AccessibilityEvents时由系统。这类事件表示   用户界面中的某些状态转换,例如焦点   已更改,已单击按钮等。此类服务可以   可选地请求查询内容的功能   活动窗口。开发可访问性服务需要   扩展这个类并实现它的抽象方法。

答案 1 :(得分:0)

由于每个应用都可以在运行时设置通知图标,因此您无法获得它。对于同一个应用程序的每个通知,它甚至可能不同。