我有一个Android Service
,可以创建通知和相应的状态图标。当用户对通知作出反应时,我希望将意图传递给我的Service
。这一切似乎都很简单。
我可以创建通知,状态栏中会出现图标,当我拉下窗帘时,我会看到我的通知。当我点击通知时,没有任何反应。当我什么都不说时,我的意思是意图没有传递给我的服务。
我感觉到的是我在Notification,Intent或PendingIntent中错误地设置了某些内容,但我正在努力弄清楚哪一个是错误的。
这是代码(所有在Service类中):
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand(): intent=" + intent + ", startId=" + startId);
Log.d(TAG, LKServiceMessages.dumpExtras(intent));
String command = LKServiceMessages.getMessageKind(intent);
if (command.equals(K_STATUS_NOTIFICATION)) {
cancelNotification(0);
command = null;
} else {
displayStatusNotification();
}
if (command == null) {
Log.d(TAG, "Non-library command received - ignoring...");
} else {
Log.d(TAG, "Handling action - partially processing this action");
}
return START_REDELIVER_INTENT;
}
private void displayStatusNotification() {
Intent intent = new Intent(K_STATUS_NOTIFICATION,null,this,LKService.class);
PendingIntent pIntent = PendingIntent.getService(LKService.this, 0, intent, 0);
mNotification = new NotificationCompat.Builder(this)
.setContentTitle("Bacon")
.setContentText("Bacon is good for you. Tap to dismiss.")
.setSmallIcon(R.drawable.ic_status)
.addAction(R.drawable.ic_status, "Notification getAction()", pIntent)
.setAutoCancel(true)
.setDeleteIntent(pIntent)
.build();
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, mLeafNotification);
}
private void cancelNotification(int notificationId) {
if (Context.NOTIFICATION_SERVICE != null) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) getApplicationContext().getSystemService(ns);
nMgr.cancel(notificationId);
}
}
我做错了什么,但我无法弄清楚是什么。我最初的想法是PendingIntent是错误的,但这里有许多我不完全理解的活动部分。
有什么想法?
答案 0 :(得分:1)
在构建通知时,您正在调用
.setDeleteIntent(pIntent)
这将设置用户删除通知时将使用的Intent
。听起来你想打电话
.setContentIntent(pIntent)
代替。这将设置用户点击通知时将使用的Intent
。