【问题标题】:onClick() listener for notificationonClick() 监听器通知
【发布时间】:2017-07-29 17:17:42
【问题描述】:

我想在点击通知时突出显示ListItem。我显示ListView 的活动已经打开,因此我无法在单击通知时再次打开它。我进行了很多搜索,但我认为没有任何onClick() 通知方法。那么请告诉我该怎么做?

这就是我生成通知的方式

Intent intent = new Intent();
PendingIntent pIntent = PendingIntent.getActivity(context, notification_id, intent, 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
mBuilder.setTicker("Smart Locator");
mBuilder.setSmallIcon(R.drawable.notification_icon);
mBuilder.setContentTitle(name);
DetailsContainer dc = new LocationDetails(context).getDetails(location);
mBuilder.setContentText(date + ", " + dc.area + " " + dc.locality);
mBuilder.setContentIntent(pIntent).getNotification();
mBuilder.setAutoCancel(true);
mBuilder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mBuilder.setSound(alarmSound);
NotificationManager mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(document_id, notification_id, mBuilder.build());

【问题讨论】:

  • 我认为单击通知会创建一个 Intent,您可以在清单中指定哪个活动可以处理它。从那里,您需要一些数据来了解您单击的通知类型以及您想要选择的 ListView 数据的位置

标签: android


【解决方案1】:

您可以在未决意图中添加额外内容。

final Intent intent = new Intent(this, MyActivity.class);
intent.setData(data);
intent.putExtra("key", "clicked");
final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent), 0);

然后,当您的活动“重新开始”时,您可以通过收到的捆绑包检查通知是否被点击。

@Override
protected void onCreate(Bundle savedInstanceState) {
    processIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {     
    processIntent(intent);
};

private void processIntent(Intent intent){
    //get your extras
    //if clicked, do something with ListView
}

查看this question了解更多信息。

【讨论】:

  • 请尽量不要从别处复制答案
  • 我不是在复制答案,我已经给出了他需要检查点击通知的逻辑,我什至放了代码的来源。
  • 当然。我的意思是,一旦您获得更多声誉,您就可以将问题标记为重复。
【解决方案2】:

在您的待处理意图中添加额外内容:

final Intent intent = new Intent(this, MyActivity.class);
intent.setData(data);
intent.putExtra("NotClick", true);
final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent), 0);

并在您的活动中使用以下代码:

@Override
protected void onNewIntent(Intent intent) {
    try {
        //on click notification
        Bundle extras = intent.getExtras();
        if (extras.getBoolean("NotClick")) {
             //Do your stuff here 
        }
    } catch (Exception e) {
        Log.e("onclick", "Exception onclick" + e);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2019-05-27
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多