可以在锁定屏幕中显示不同的通知布局吗?

时间:2015-09-03 09:32:09

标签: android notifications remoteview

我想在锁定屏幕中显示不同的通知布局。我正在使用远程视图,我想知道我是否可以从通知创建者类创建两个不同的通知,具体取决于它是否锁定屏幕。

是否存在此标志?

谢谢。

2 个答案:

答案 0 :(得分:0)

编辑:也许本教程可以帮助您

http://karanbalkar.com/2014/11/tutorial-90-implement-media-style-notifications-in-android/

旧: 您可以创建具有不同优先级的2个通知,如

中所述

http://developer.android.com/design/patterns/notifications.html

并使用锁定屏幕上显示的通知的HIGH优先级。

问题是您要创建仅在锁屏上可见的通知。此功能本身不存在。使用上述解决方案,您将在解锁屏幕中显示两个通知。

你可以听这个答案所示的屏幕锁定:

Android - detect phone unlock event, not screen on

然后你可以解除具有高优先级的通知,只使用带有default-prio的通知,并在必要时更新此通知。

如果您想更好地描述您想要完成的任务,我可以为您提供代码示例

答案 1 :(得分:0)

是的,你可以做到。

如果屏幕锁定,您可以使用Settings.System.putString(context.getContentResolver(), Settings.System.NEXT_ALARM_FORMATTED, yourMessage);来显示通知。 如果屏幕未锁定,则使用

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

现在您可以显示通知。并且您检测到您的屏幕已被锁定,那么您可以使用此代码

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean locked = km.inKeyguardRestrictedInputMode();

享受您的代码:)