8

Câu hỏi ngắn:Cách sử dụng NotificationCompat.Builder và startForeground?

Tôi đang cố gắng sử dụng lớp NotificationCompat.Builder để tạo thông báo sẽ được sử dụng cho dịch vụ, nhưng vì một lý do nào đó, tôi không thấy thông báo hoặc có thể 't hủy bỏ nó khi dịch vụ sẽ bị phá hủy (hoặc dừng lại ở phía trước).

mã của tôi:

@Override 
public int onStartCommand(final Intent intent, final int flags, final int startId) { 
    final String action = intent == null ? null : intent.getAction(); 
    Log.d("APP", "service action:" + action); 
    if (ACTION_ENABLE_STICKING.equals(action)) { 
     final NotificationCompat.Builder builder = new Builder(this); 
     builder.setSmallIcon(R.drawable.ic_launcher); 
     builder.setContentTitle("content title"); 
     builder.setTicker("ticker"); 
     builder.setContentText("content text"); 
     final Intent notificationIntent = new Intent(this, FakeActivity.class); 
     final PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
     builder.setContentIntent(pi); 
     final Notification notification = builder.build(); 
     // notification.flags |= Notification.FLAG_FOREGROUND_SERVICE; 
     // notification.flags |= Notification.FLAG_NO_CLEAR; 
     // notification.flags |= Notification.FLAG_ONGOING_EVENT; 

     startForeground(NOTIFICATION_ID, notification); 
     // mNotificationManager.notify(NOTIFICATION_ID, notification); 

    } else if (ACTION_DISABLE_STICKING.equals(action)) { 
     stopForeground(true); 
     stopSelf(); 
     // mNotificationManager.cancel(NOTIFICATION_ID); 
    } 
    return super.onStartCommand(intent, flags, startId); 
} 

Các lệnh nhận xét là thử nghiệm của tôi để làm cho nó làm việc. không có lý do gì.

Tôi thậm chí còn thêm hoạt động giả mạo vì nó muốn contentIntent, nhưng nó vẫn không hoạt động.

Mọi người có thể giúp bạn không?

+0

bài này, cùng với câu trả lời được chấp nhận, cố định vấn đề của tôi sau khi làm việc trong nhiều ngày trên một giải pháp. –

Trả lời

9

Tôi đã gặp vấn đề tương tự trong khi trước đây và tôi phát hiện ra rằng vì lý do nào đó, ID thông báo 0 không hoạt động tốt với startForeground(), có phải là giá trị của NOTIFICATION_ID trong mã của bạn không?


EDIT: các tài liệu đã được cập nhật để nói rằng 0 là một ID hợp lệ

+0

có. nó là. không nghĩ đến việc thay đổi nó vì tôi thường bắt đầu với con số này cho mọi thứ ... chắc chắn nó sẽ sửa nó? –

+0

Tôi đã tìm thấy câu trả lời [ở đó] (http://stackoverflow.com/questions/8725909/startforeground-does-not-show-my-notification), rõ ràng nó được biết đến. Nó cố định nó cho tôi cũng như OP của bài đăng đó, vì vậy nó cũng nên khắc phục vấn đề của bạn. Cách tốt nhất để biết là để thử :) – Joffrey

+0

mỗi khi tôi nói với bản thân mình rằng tôi không thể tìm thấy bất kỳ lỗi weirder trên android ... –

Các vấn đề liên quan