【问题标题】:What's the appropriate way to test if app icon badge numbers show in Android?测试应用程序图标徽章编号是否在 Android 中显示的适当方法是什么?
【发布时间】:2021-04-28 09:45:35
【问题描述】:

SO中有很多华为图标徽章相关的帖子,比如How to show App Icon Badge Numbers on Huawei,我看过the official document of Badges

我觉得官方文档已经够好了,我就是想知道如何自动测试呢?

例如,如果团队中的一位工程师错误配置了徽章相关的 SDK 文件,客户的华为手机仍然可以推送通知,但徽章编号可能不显示。

我相信图像分类技术会有所帮助,例如,我们可以通过以下方式对其进行自动测试:

  1. 安装应用并通过adb shell命令+uiautomator登录应用
  2. 返回主屏幕以查看图标
  3. 从后端服务器推送通知。
  4. 对手机进行屏幕截图,并使用一些深度学习技术图像分类来验证手机上是否有徽章编号。

在这些步骤中测试它可能不是最好的方法,我想知道是否有任何本地 API 来获取徽章编号?

【问题讨论】:

  • 我不太确定,您想获取徽章显示的通知数量,还是根本不显示徽章?无论如何忘记机器学习,它不会解决任何问题。
  • @Nicolas 我只是想知道是否显示了徽章,但如果我们能获取徽章显示的数字会更好。

标签: android android-espresso huawei-mobile-services huawei-developers


【解决方案1】:

查找此类信息的最佳方式是查找开源应用程序,例如设置或启动器应用程序:

如果您想验证通知徽章是打开还是关闭,您可以这样做:

Settings.Secure.getInt(context.contentResolver, "notification_badging")

这甚至记录在 Settings 类中,但设置名称 (Settings.Secure.NOTIFICATION_BADGING) 是隐藏(内部)API 的一部分。但它仍然有效,至少它适用于普通 Android。华为设备需自行测试。

徽章数量的获取,不知道能不能直接获取。从上面的第二个链接中,您似乎必须创建一个通知侦听器来计算传入的通知。

【讨论】:

  • 华为的一些更新,我尝试使用int badging_flag = Settings.Secure.getInt(context.getContentResolver(), "notification_badging");,不管徽章上是否有数字,似乎总是返回1
  • 哦,那我误会了。如果显示徽章的设置打开,则返回 1,而不是特定应用程序上是否有徽章。为此,您可能需要通知侦听器(第二个链接)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多