如何在锁屏上显示通知内容 - Android

Posted

技术标签:

【中文标题】如何在锁屏上显示通知内容 - Android【英文标题】:How to show notification content on lockscreen - Android 【发布时间】:2016-07-06 11:56:41 【问题描述】:

我正在使用 NotificationCompat.Builder 创建通知:

Intent activityIntent = new Intent( this,
                                    MyActivity.class );
PendingIntent resultingActivityPendingIntent = getPendingIntent( activityIntent );

// create notification for foreground service
m_notificationBuilder = new NotificationCompat.Builder( this );
m_notificationBuilder.setSmallIcon( R.mipmap.ic_launcher );
m_notificationBuilder.setTicker( "some text" );
m_notificationBuilder.setContentTitle( "some text" ) );
m_notificationBuilder.setContentIntent( resultingActivityPendingIntent );
startForeground( ONGOING_NOTIFICATION_ID,
                 m_notificationBuilder.build() );

状态栏和通知下拉菜单中的通知功能与预期一样,但对于锁屏,它显示如下:

com.myname.mypackage 
Contents hidden

如何更改我的包名所在的行?

我已尝试在通知生成器中设置内容文本和内容信息,但没有任何改变。

一定有一些明显的我遗漏的东西,因为其他应用程序,即使它们的内容被隐藏,也会让那行说一些相关的东西,比如:

USB connectivity
Contents hidden

我正在使用 SDK 19,构建工具 19,目标 19,最小 SDK 11。

【问题讨论】:

【参考方案1】:

你也可以用另一种方式来做。

您可以调用 notificationCompat.Builder 的 setVisibility() 方法,您可以在其中设置 VISIBILITY_PUBLIC 标志,该标志将反映您的标题和 contentText 在屏幕上显示的内容已解锁。

更改标签字段也会更改应用程序抽屉中的应用程序名称。

【讨论】:

【参考方案2】:

我想通了:我需要在 androidManifest.xml 的 <application> 节点中设置 android:label 字段。

【讨论】:

【参考方案3】:

NotificationCompat.Builder 设置默认可见性标志VISIBILITY_PRIVATE。相反,通过调用setVisibility() 将其显式设置为VISIBILITY_PUBLIC。

【讨论】:

嗯,SDK 19 上似乎没有可见性。此外,根据文档,可见性标志似乎与“隐藏的内容”行有关,而不是“标题” (或任何名称)通知。我弄错了吗? 抱歉,我链接到了错误的常量。它们应该指向兼容库版本,而不是平台。 (javadoc 链接似乎也不正确)。已编辑。通知隐私是一项新功能,是的,因此您不会因此而影响旧平台。 道格,谢谢您的回复。你给了我一个有用的线索。我最终阅读了通知设计文档并看到 VISIBILITY_PRIVATE 的描述是“在锁定屏幕上,显示有关此通知存在的基本信息,包括其图标和发布它的应用程序的名称。”然后我研究了如何设置我的应用程序的名称。原来,这就是问题所在:我没有在 AndroidManifest.xml 的 节点中设置 android:label 字段。

以上是关于如何在锁屏上显示通知内容 - Android的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 设备的锁屏上添加自定义专辑封面

android2.2的锁屏界面,如何在开机时默认显示横屏

一种在锁屏安卓中捕捉双击的方法?

活动之间显示锁屏

安卓设置锁屏时预览消息内容

在Windows Phone上访问快速通知的数量