如何创建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
相关产品推荐
相关产品推荐

