在过去的几天里,我的应用程序中的 NotificationManager 出现了问题,我似乎还没有接近解决它。
我有一个非常简单的服务,目前什么都不做。它只是应该显示通知:
public class UpdateService extends Service {
private static final String TAG = "UpdateService";
private static int NOTIFICATION_ID = 1;
private UpdateServiceBinder binder = new UpdateServiceBinder();
@Override
public void onCreate() {
Log.i(TAG, "Service created");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "Service started");
sendNotification(100);
return Service.START_NOT_STICKY;
}
private void sendNotification(int updatedItems) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.icon)
.setContentTitle("Sync")
.setContentText("Updated " + updatedItems);
Intent resultIntent = new Intent(getBaseContext(), MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(getApplicationContext());
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendindIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(resultPendindIntent);
NotificationManager manager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(NOTIFICATION_ID, builder.build());
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
@Override
public boolean onUnbind(Intent intent) {
return true;
}
public class UpdateServiceBinder extends Binder {
public UpdateService getService() {
return UpdateService.this;
}
}
}
不幸的是,当服务启动并且应该显示通知时,什么也没有发生。该服务肯定是根据日志消息启动的。同时有来自NotificationManager的警告:
11-30 23:24:34.620: I/UpdateService(28356): 服务创建
11-30 23:24:34.800:I/UpdateService(28356):服务已启动
11-30 23:24:34.808:W/NotificationManager(28356):通知:id 损坏:发送 1,返回 0
我尝试使用与 1 不同的数字,但没有帮助。我不知道该怎么做。我使用的代码来自这里的服务和通知的Android 文档。当我将代码隔离在单独的干净应用程序中时,该应用程序的设置方式与我正在处理的通知类似。以前有没有人遇到过这个问题或有任何想法?
任何帮助表示赞赏。谢谢!