【问题标题】:Android: system notification iconAndroid:系统通知图标
【发布时间】:2015-03-22 21:22:50
【问题描述】:

我正在开发一个实现 vpn 服务的 Android 应用程序。 在 VPN 连接的生命周期内,会显示系统管理的通知,如文档中所述:http://developer.android.com/reference/android/net/VpnService.html

此通知实际上似乎显示了我作为应用程序图标提供的图标,但我注意到该图标在某些设备上已调整大小并且其比例已修改。我这里根据大小制作了各种启动器图标(ldpi,mdpi...xxxhdpi):http://developer.android.com/design/style/iconography.html

我哪里错了?该系统通知图标在哪里被系统获取?

【问题讨论】:

    标签: android android-notifications


    【解决方案1】:

    默认情况下,VpnService 与任何Service 一样,都会从您的应用程序继承图标,除非您通过android:icon 在清单中指定一个图标。您应该根据notification icon specifications 创建一个图标(Android Asset Studio 等工具可以提供帮助)并将其设置为您的服务的android:icon

    <service android:name=".ExampleVpnService"
             android:icon="@drawable/notification_icon"
             android:permission="android.permission.BIND_VPN_SERVICE">
      <intent-filter>
        <action android:name="android.net.VpnService"/>
      </intent-filter>
    </service>
    

    【讨论】:

    • 您自己尝试过吗?似乎“钥匙”图标是为 VPN 硬编码的
    • @KirillKarmazin 有一个系统管理的真实通知,其中包含 VPN 正在运行的信息,并显示有关运行 vpn 服务的应用程序的信息。 VPN 处于活动状态时默认显示的“密钥”本身不是通知,而只是状态栏中的指示符。当然不能修改密钥,但通知可能会根据答案。
    【解决方案2】:

    恐怕这是不可能的。

    Pre-Lollipo,看看Vpn.java:504 - 它专门加载启动器图标。这似乎是经过深思熟虑的——可能是出于安全考虑,以防止误导用户。

    将 Lollipop 他们moved 发布到快速设置 UI 中,所以我不确定是否有图标,但如果有,出于同样的原因,它可能也被硬编码为使用启动器图标。

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多