Android如何在屏幕上显示通知

我一直在推送通知,我能够实现它,并显示在状态栏,我面临的问题是,即使手机是锁,我想显示它,在它所说的锁屏(“拖动解锁“),我已经看到这样的通知,但无法find任何示例。

例如:就像收到未接电话时一样,它会显示在屏幕上的lockingbutton下。

码:

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); 

Solutions Collecting From Web of "Android如何在屏幕上显示通知"

你有没有尝试用标志创buildalertdialog? 该flag_show_when_locked应该做的伎俩。 请参考这个主题,你应该在这里find更详细的答案。 Androidlocking屏幕小部件

使用NotificationCompat.Builder创build通知

  NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
             .setSmallIcon(R.drawable.ic_launcher)//通知图标
             .setContentTitle(“Notification!”)//通知的标题
             .setContentText(“你好字”)//通知消息
             .setAutoCancel(真);  //点击后清除通知
 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());

在locking的屏幕上推送通知http://www.hongkiat.com/blog/android-lock-screen-notifications/

您看到的通知可能实际上是放置在自定义小部件主机锁屏上的小部件。

如果您在4.4.3之后查看Android平台的InstallWidgetReceiver源代码,请执行以下操作:

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

你会看到作者的这个笔记:

/ ** *稍后我们可能会对此进行充实,以便处理允许外部应用程序放置小部件的function,但现在,我们只是希望公开其他方面的操作。 * /

而且你可以看到InstallWidgetReceiver.java实际上并没有像InstallShortCutReceiver.java那样通过google充实。 所以看起来至less达到4.4.3你不能添加小部件到原生locking屏幕,就像你可以使用InstallShortCutReceiver添加一个快捷方式到主屏幕一样。

除非您将自己的锁屏应用程序构build为小部件主机,并且用户将代替本机进行安装,否则使用小部件可能会失败。

不过,另一种方法就是设置getWindow()。addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

这将显示您的活动是否屏幕locking或不。 屏幕locking时closures此活动将显示locking的屏幕。

使用NotificationCompat.Builder创build通知,但一定要把公众的可见性

 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