gpt4 book ai didi

android - 通知可用时获取

转载 作者:行者123 更新时间:2023-11-29 17:34:05 25 4
gpt4 key购买 nike

我想创建一个外部通知 LED。我可以轻松处理电话和微 Controller 之间的电子和无线通信。但是,我不确定如何检测何时有可用通知。也许是 NotificationListenerService?

最佳答案

是的,最好的方法是使用 NotificationListenerService。它是在 Android 4.3 中引入的,并且在 Android 4.4 中通过许多新功能进行了相当大的改进。你应该使用它。

我将尝试通过简短的教程帮助您了解如何使用它。

如何使用

第一步

您首先需要扩展 NotificationListenerService 类并实现其方法。

public class SimpleKitkatNotificationListener extends NotificationListenerService {

@Override
public void onNotificationPosted(StatusBarNotification sbn) {
//..............
}

@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
//..............
}
}

第 2 步

然后您必须使用 BIND_NOTIFICATION_LISTENER_SERVICE 权限在 list 文件中声明该服务,并在 SERVICE_INTERFACE 操作中包含一个 Intent 过滤器。

<service
android:name="it.gmariotti.android.examples.
notificationlistener.SimpleKitkatNotificationListener"
android:label="@string/service_name"
android:debuggable="true"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
<intent-filter>
<action android:name="android.service.
notification.NotificationListenerService" ></action>
</intent-filter>

</service>

第 3 步

您必须获得用户的授权。您可以在设置 -> 安全 -> 通知访问

中找到它
Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
startActivity(intent);

第四步

使用 extras 字段获取您想要的任何信息,

Notification mNotification=sbn.getNotification();
Bundle extras = mNotification.extras;

你可以从这个类中获得很多信息,

/**
* {@link #extras} key: this is the title of the notification,
* as supplied to {@link Builder#setContentTitle(CharSequence)}.
*/
public static final String EXTRA_TITLE = "android.title";

/**
* {@link #extras} key: this is the main text payload, as supplied to
* {@link Builder#setContentText(CharSequence)}.
*/
public static final String EXTRA_TEXT = "android.text";

/**
* {@link #extras} key: this is a third line of text, as supplied to
* {@link Builder#setSubText(CharSequence)}.
*/
public static final String EXTRA_SUB_TEXT = "android.subText";

/**
* {@link #extras} key: this is a bitmap to be used instead of the small icon when showing the
* notification payload, as
* supplied to {@link Builder#setLargeIcon(android.graphics.Bitmap)}.
*/
public static final String EXTRA_LARGE_ICON = "android.largeIcon";

第 5 步

你可以很容易地得到这样的数据,

String notificationTitle = extras.getString(Notification.EXTRA_TITLE);
int notificationIcon = extras.getInt(Notification.EXTRA_SMALL_ICON);
Bitmap notificationLargeIcon =
((Bitmap) extras.getParcelable(Notification.EXTRA_LARGE_ICON));
CharSequence notificationText = extras.getCharSequence(Notification.EXTRA_TEXT);
CharSequence notificationSubText = extras.getCharSequence(Notification.EXTRA_SUB_TEXT);

关于android - 通知可用时获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com