2011-09-16 79 views
19

Tôi đã làm việc trên các thông báo đẩy và tôi có thể triển khai và hiển thị nó trên thanh trạng thái, vấn đề tôi đang gặp phải là tôi muốn hiển thị nó ngay cả khi điện thoại đang khóa , Dưới màn hình khóa nơi nó nói ("kéo để mở khóa"), tôi đã thấy các thông báo như thế nhưng không thể tìm thấy bất kỳ ví dụ nào về điều đó.Android cách hiển thị thông báo trên màn hình

Ví dụ: Cũng giống như khi bạn nhận được cuộc gọi nhỡ, nó sẽ hiển thị nó dưới nút khóa trên màn hình của bạn.

Code:

String ns = Context.NOTIFICATION_SERVICE; 
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 
int icon = R.drawable.icon_launcher; 
CharSequence tickerText = "MyApplication"; 
long when = System.currentTimeMillis(); 
Notification notification = new Notification(icon, tickerText, when); 
notification.defaults |= Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE|Notification.DEFAULT_LIGHTS;; 
CharSequence contentTitle = this.title; 
CharSequence contentText = this.message; 
Intent notificationIntent = new Intent(this, MainActivity.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
mNotificationManager.notify(NOTICE_ID, notification); 
+2

không liên quan, bạn không nhất thiết cần phải lưu tất cả mọi thứ như biến cục bộ – CrackerJack9

+2

Đây không phải là có thể ngay bây giờ. –

+0

@Copa ý bạn là gì? Tham khảo của bạn là gì?Tôi có một số ứng dụng hiển thị thông báo theo cách OP mô tả (thanh thông báo, trong khi màn hình bị khóa). – CrackerJack9

Trả lời

3

Bạn đã cố gắng tạo ra các alertdialog với một lá cờ? Flag_show_when_locked sẽ thực hiện thủ thuật. Vui lòng tham khảo chủ đề này, bạn sẽ tìm thấy câu trả lời chi tiết hơn tại đây. Android Lock Screen Widget

11

Tạo thông báo sử dụng NotificationCompat.Builder

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) 
      .setSmallIcon(R.drawable.ic_launcher) // notification icon 
      .setContentTitle("Notification!") // title for notification 
      .setContentText("Hello word") // message for notification 
      .setAutoCancel(true); // clear notification after click 
Intent intent = new Intent(this, MainActivity.class); 
PendingIntent pi = PendingIntent.getActivity(this,0,intent,Intent.FLAG_ACTIVITY_NEW_TASK); 
mBuilder.setContentIntent(pi); 
NotificationManager mNotificationManager = 
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
mNotificationManager.notify(0, mBuilder.build()); 

Push Notification trên màn hình khóa http://www.hongkiat.com/blog/android-lock-screen-notifications/

+3

Điều này sẽ không giúp đỡ khi nói đến thực sự hiển thị thông báo trên màn hình khóa của thiết bị sẽ không? –

+1

Có, nó sẽ hiển thị thông báo ngay cả khi thiết bị bị khóa – Naruto

+2

Lint cho biết FLAG_ACTIVITY_NEW_TASK không tương thích với PendingIntent – auval

2

Các thông báo mà bạn đã thấy thực sự có thể widget đặt trên một lockscreen tùy chỉnh chủ widget.

Nếu bạn nhìn vào mã nền tảng mã nguồn android cho InstallWidgetReceiver như trễ như 4.4.3 ở đây:

https://android.googlesource.com/platform/packages/apps/Launcher3/+/master/src/com/android/launcher3/InstallWidgetReceiver.java

Bạn sẽ thấy thông báo này của tác giả:

/** * Chúng tôi có thể sẽ xác định điều này sau, để xử lý cho phép các ứng dụng bên ngoài đặt tiện ích, nhưng hiện tại, * chúng tôi chỉ muốn hiển thị hành động xung quanh để kiểm tra ở nơi khác. */

Và bạn có thể thấy rằng InstallWidgetReceiver.java là trong thực tế không fleshed ra bởi google trong cùng một cách như InstallShortCutReceiver.java là. Vì vậy, có vẻ như ít nhất lên đến 4.4.3 bạn không thể thêm các widget vào màn hình khóa tự nhiên giống như cách bạn có thể thêm một shortcut vào màn hình chính bằng cách sử dụng InstallShortCutReceiver.

Trừ khi bạn tạo ứng dụng khóa màn hình của riêng mình làm máy chủ lưu trữ tiện ích và người dùng cài đặt thay cho người gốc, bạn có thể không may mắn bằng tiện ích con.

Một cách tiếp cận khác là chỉ cho chúng tôi một hoạt động đặt getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

Thao tác này sẽ hiển thị hoạt động của bạn cho dù màn hình có bị khóa hay không. Loại bỏ hoạt động này khi màn hình bị khóa sẽ hiển thị màn hình bị khóa.

2

Tạo thông báo sử dụng NotificationCompat.Builder nhưng hãy chắc chắn để đưa tầm nhìn ra công chúng như

NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
     builder 
     .setContentTitle("Title") 
     .setContentText("content") 
     .setSmallIcon(R.mipmap.ic_launcher) 
     .setVisibility(NotificationCompat.VISIBILITY_PUBLIC);//to show content in lock screen 
Các vấn đề liên quan