Ane*_*eez 12 android android-notifications
我想知道NotificationListenerService是否有一种方法可以知道是否已单击Notification或已将其解除.我可以看到NotificationListenerService中的Inner类NotificationListenerWrapper有一个onNotificationClick()方法,但由于NotificationListenerWrapper被@hide注释隐藏,我无法使用它.
我的问题是我可以编写一个监听器,它基本上可以跟踪通知是否被点击或被解雇.
基本上我想跟踪我的应用程序的通知是否被解雇或者是否在每个通知中没有任何侵入性代码的情况下被点击.
PS NotificationListenerService仅提供onNotificationPosted()和onNotificationRemoved(),但我的要求是知道是否单击或删除了通知.
谢谢
我认为没有听众.但是您可以使用PendingIntent和以另一种方式实现此逻辑BroadcastReceiver
对于OnClick
添加ContentIntent和BroadcastReceiver.因此,您将知道您的通知是否被点击了BroadcastReceiver
Intent onClickIntent = new Intent(this, OnClickBroadcastReceiver.class);
PendingIntent onClickPendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, onClickIntent, 0);
mBuilder.setContentIntent(onClickPendingIntent);
Run Code Online (Sandbox Code Playgroud)
在里面BroadcastReceiver你可以写出你的逻辑
public class OnClickBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Open your activity here
Intent mainIntent = new Intent(context, YourActivity.class);
context.startActivity(mainIntent);
// Do your onClick related logic here
}
}
Run Code Online (Sandbox Code Playgroud)
对于onDismiss
为此,您需要DeleteIntent在通知构建器中添加一个
Intent onCancelIntent = new Intent(this, OnCancelBroadcastReceiver.class);
PendingIntent onDismissPendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, onCancelIntent, 0);
mBuilder.setDeleteIntent(onDismissPendingIntent);
Run Code Online (Sandbox Code Playgroud)
而且BroadcastReceiver因为这是
public class OnCancelBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Do your logic here
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘了这些注册BroadcastReceiver到AndroidManifest
| 归档时间: |
|
| 查看次数: |
3391 次 |
| 最近记录: |