2012-01-03 30 views
5

Tôi muốn tạo thông báo tùy chỉnh với thanh tiến trình và nút xóa.Thông báo tùy chỉnh Android 4.0 như google music

Ảnh chụp màn hình:

enter image description here

Tôi thành công để tạo ra một thông báo tùy chỉnh với một thanh tiến trình, nhưng tôi đã không quản lý để tạo ra các sự kiện xóa. Tôi muốn hủy thông báo và ngừng tải lên khi người dùng nhấp vào "x" (như trong âm nhạc của google, vì vậy tôi không muốn bắt đầu một hoạt động để xóa thông báo).

Đây là mã làm việc của tôi:

notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE); 

    int icon = R.drawable.ic_launcher; 
    CharSequence tickerText = "Hello"; 
    long when = System.currentTimeMillis(); 

    notification = new Notification(icon, tickerText, when);  


    CharSequence contentTitle = "My notification"; 
    CharSequence contentText = "Hello World!"; 
    Intent notificationIntent = new Intent(context, UploadEventsReceiver.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
    notification.contentView = new RemoteViews(context.getPackageName(), R.layout.upload_progress); 
    notification.contentView.setOnClickPendingIntent(R.id.text, contentIntent); 

    notificationManager.notify(this.notificationId, notification); 

Tại dòng

Intent notificationIntent = new Intent(context, UploadEventsReceiver.class); 

Tôi đã thử với một máy thu phát sóng mà không cần "phát sóng" nhưng tôi không biết nếu đó là cách đúng đắn phải làm nó và tôi đã không thành công để làm cho nó hoạt động. Tôi nên sử dụng những gì và cách sử dụng nó?

+0

Nice, tôi chuẩn bị để thực hiện những gì tôi chỉ tìm thấy trong ảnh chụp màn hình của bạn: gọn gàng Toggles điều khiển phần cứng, ví dụ cho chế độ WiFi, chế độ xoay hoặc chế độ trên máy bay. Bạn đang chạy một ROM tùy chỉnh hoặc bạn có thấy rằng trên thị trường? Cảm ơn sự giúp đỡ của bạn và chúc may mắn với dự án của bạn. – stfn

Trả lời

5

Tôi không biết nó được tạo ra như thế nào trong âm nhạc của Google, nhưng bạn có thể đặt onClickListener cho bất kỳ chế độ xem nào trong bố cục được chuyển đến RemoteViews. Chỉ cần làm như sau:

RemoteViews remoteViews = new RemoteViews(widgetPackage, R.layout.widget); 
Intent action = new Intent(context, Your_cancel_broadcast.class); 
action.setAction(CANCEL_BROADCAST_ACTION); 
actionPendingIntent = PendingIntent.getBroadcast(context, 0, action, 0); 
remoteViews.setOnClickPendingIntent(R.id.your_x_btn, actionPendingIntent); 

và tạo chương trình phát sóng, nhận được CANCEL_BROADCAST_ACTION và ngừng những gì bạn muốn và hủy thông báo này.

+0

Mục đích có được phát sóng không? Hoặc dự định sẽ chỉ gửi đến cancel_broadcast của tôi? – Quanturium

+0

Nó phụ thuộc vào giá trị của 'CANCEL_BROADCAST_ACTION' - nếu nó là tùy chỉnh (smth như" lalala ") - chỉ phát sóng của bạn sẽ nhận được ý định này – Jin35

0

Ngoài ra, tôi nghĩ (theo tài liệu) rằng phương pháp của bạn không được chấp nhận.

Bạn nên sử dụng sth như:

Notification.Builder builder = new Notification.Builder(context); 
builder.setContentTitle("Your notification title"); 
builder.setContentText("Your notification text"); 
builder.setSmallIcon(R.drawable.ic_your_icon); 
builder.setContentIntent(yourIntent); 
notificationManager.notify(null, YOUR_UNIQUE_NOTIFICATION_ID, builder.getNotification()); 

http://developer.android.com/reference/android/app/NotificationManager.html

http://developer.android.com/reference/android/app/Notification.Builder.html

+1

Lưu ý: Notification.Builder chỉ có sẵn trong API 11+. Thư viện hỗ trợ v4 có NotificationBuilderCompat, nhưng theo liên kết sau nó hiện đang thiếu phương thức setProgress của nó. http://code.google.com/p/android/issues/detail?id=30755 i – MaximumGoat

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