处理按钮单击通知

时间:2015-05-11 20:20:14

标签: android notifications onclicklistener

当我点击通知按钮时,我收到了一个按钮的通知,我想做点什么。

有可能像OnClickListener那样处理吗?

以下是通知的代码:

 private void notification_anzeigen(){


    Intent intent = new Intent(this, GestureAnyWhere.class);

    // String notificationMessage = "GestureAnyWhere läuft im Hintergrund";

    // intent.putExtra("NotificationMessage", notificationMessage);
    // intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);


    PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);

    // build notification
    // the addAction re-use the same intent to keep the example short
    Notification n  = new Notification.Builder(this)
            .setContentTitle("GestureAnyWhere läuft im Hintergrund")
            //.setContentText("GestureAnyWhere muss im Hintergrund ausgeführt werden, um Gesten zu erkennen")
            .setSmallIcon(R.drawable.ic_launcher)       // muss rein, ansonsten wird keine Notifikation angezeigt
            .setContentIntent(pIntent)
            .addAction(R.drawable.ic_launcher, "Plus-Button", pIntent)
            .setStyle(new Notification.BigTextStyle().bigText("Auf den Plus-Button drücken, um auf aktueller Seite Gesten zu erkennen"))
            .setAutoCancel(true).build();

    n.setLatestEventInfo(getApplicationContext(), "Plus-Button", "neu", pIntent);


    NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(0, n);
}

很抱歉,这个问题并不清楚。所以我试着更好地指出它:

  • 我有一个后台服务,当我最小化我的应用程序时启动
  • 当服务启动时,将显示一条新通知,通知用户该应用程序现在在后台运行
  • 后台服务应该在那里,以便检测在应用程序之外绘制的手势
  • 当我点击通知并再次启动应用程序时,服务将被停止(否则我可以在我的应用程序内部绘制而不再点击某些内容) - >所以这是我想要做的第一点:当我点击通知时停止后台服务
  • 当我最小化我的应用程序并启动服务时,我现在只能在主屏幕上绘制 - >所以这是我想要做的第二点:当用户点击通知下的按钮时,应调用一个Activity,以便用户可以在当前视图上绘图

因为我只想知道如何处理通知(或通知下的按钮)的点击通常我不提供服务和所有其他内容的代码。

我希望问题和我想做的事情更清楚一点。

非常感谢。

1 个答案:

答案 0 :(得分:0)

好吧,据我所知,你想在返回活动后立即停止服务。 为此,您可以在PendingIntent的内部Intent中添加一些额外内容。 从你的活动中的意图中解析这个额外的(如果需要的话,在onCreate和onNewIntent上),然后调用Context.stopService()