You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建Notification.Action.Builder构造函数所需的Icon参数?

Notification.Action.Builder 所需Icon实例的创建方法

Icon类没有公开的构造函数,全部通过类提供的静态工厂方法生成实例,根据你的图标来源选择对应方法即可,完全可以替代旧版废弃构造函数传入drawable资源ID的能力:

  • 本地drawable/mipmap资源场景:这是最常用的场景,直接调用Icon.createWithResource(Context context, int resId),第一个参数传入应用上下文,第二个参数传入原先旧构造使用的drawable整型资源ID即可,和旧逻辑的资源传入规则完全一致。
  • 动态生成图标场景:如果你的图标是运行时绘制、处理得到的Bitmap对象,调用Icon.createWithBitmap(Bitmap bitmap)传入对应Bitmap实例。
  • 本地文件/ContentProvider图标场景:如果图标存储在本地对应Uri路径下,调用Icon.createWithContentUri(Uri uri)传入目标Uri。
  • 字节数据图标场景:如果图标以字节数组形式存储(如网络下载的未解码图标数据),调用Icon.createWithData(byte[] data, int offset, int length),传入字节数组、数据起始偏移、有效数据长度即可。

完整使用示例

// Java版本示例
// 1. 创建Icon实例
Icon actionIcon = Icon.createWithResource(getApplicationContext(), R.drawable.ic_action_archive);
// 2. 准备点击Action触发的PendingIntent
PendingIntent archivePendingIntent = PendingIntent.getActivity(
        getApplicationContext(),
        REQ_CODE_ARCHIVE,
        archiveIntent,
        PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
);
// 3. 构造Notification.Action
Notification.Action archiveAction = new Notification.Action.Builder(
        actionIcon,
        "归档",
        archivePendingIntent
).build();

注意:Icon类从API 23(Android 6.0)开始提供,如果你的应用需要兼容低于23的系统版本,需要做版本适配分支,低版本继续使用旧版构造函数,高版本使用新的带Icon参数的构造函数,避免出现类找不到的崩溃问题。

内容的提问来源于stack exchange,提问作者JohnyTex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:57:20