您的位置:首页 > 游戏 > 游戏 > 关键词推广和定向推广_免费图纸网站_域名搜索引擎入口_搜索引擎的优化方法有哪些

关键词推广和定向推广_免费图纸网站_域名搜索引擎入口_搜索引擎的优化方法有哪些

2025/1/7 3:23:01 来源:https://blog.csdn.net/weixin_52173250/article/details/144804574  浏览:    关键词:关键词推广和定向推广_免费图纸网站_域名搜索引擎入口_搜索引擎的优化方法有哪些
关键词推广和定向推广_免费图纸网站_域名搜索引擎入口_搜索引擎的优化方法有哪些

问题描述与处理策略

1、问题描述
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.notifications/com.my.notifications.MainActivity}: 
java.lang.IllegalArgumentException: Invalid notification (no valid small icon): 
Notification(channel=simple_channel shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE)
  1. 在 MainActivity 中创建了一个无效的 Notification 而抛出了 RuntimeException 异常

  2. 异常的具体原因是 Notification 没有设置的小图标 no valid small icon

  3. 在 Android 中,每个 Notification 都必须有一个小图标,这是通知的基本组成部分之一

2、处理策略
// 假设原来是这样的Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID).setContentTitle("通知").setContentText("点击跳转到目标页面").setContentIntent(pendingIntent).setAutoCancel(true).build();
// 需要修改成这样的Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID).setContentTitle("通知").setContentText("点击跳转到目标页面").setSmallIcon(R.drawable.ic_notification).setContentIntent(pendingIntent).setAutoCancel(true).build();

补充学习

1、IllegalArgumentException
(1)基本介绍
  1. IllegalArgumentException 是 Java 中的一个运行时异常,它继承自 RuntimeException

  2. IllegalArgumentException 通常用于指示传递给方法的参数不符合预期或违反了方法的约定

  • IllegalArgumentException 常见的触发场景如下
  1. 传递了空值(null)给不接受空值的方法参数

  2. 传递了超出方法参数预期范围的值,例如,不在指定范围内的数值

  3. 传递了类型不正确或格式不符合要求的参数,例如,将字符串转换为数字时字符串格式不正确

(2)复现
int result = Integer.parseInt("Hello World");System.out.println(result);
  • 输出结果
Exception in thread "main" java.lang.NumberFormatException: For input string: "Hello World"
  • 注:NumberFormatException 是 IllegalArgumentException 的子类
public class NumberFormatException extends IllegalArgumentException {...
}

2、Notification 信息
  • 这是一个简化的、用于日志记录或调试的 Notification 字符串表示
Notification(channel=simple_channel shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE)
(1)channel=simple_channel
  1. 表示 Notification 被分配到了名为 simple_channel 的通知渠道

  2. 在 Android Oreo(API 级别 26)及更高版本中,所有通知都必须分配到一个通知渠道,这个渠道用于定义通知的行为,例如,重要性、可见性、声音、振动设置等

(2)shortcut=null
  • 表示没有为 Notification 设置相关联的快捷方式
(3)contentView=null
  1. 表示没有为 Notification 设置自定义的布局,如果为 null,则使用系统默认的布局。

  2. 可以使用 setCustomContentView 方法设置自定义的布局

(4)vibrate=null
  1. 表示没有为 Notification 设置振动模式,如果为 null,则根据通知渠道的设置来决定是否振动

  2. 可以使用 setVibrate 方法为通知设置振动模式

(5)sound=null
  1. 表示没有为 Notification 设置声音,如果为 null,则根据通知渠道的设置来决定是否播放声音

  2. 可以通过 setSound 方法为 Notification 设置声音

(6)defaults=0x0
  1. 表示没有为 Notification 设置默认行为

  2. defaults 是一个标志位,可以包含多个值,例如,Notification.DEFAULT_ALL(应用所有默认行为,例如,声音、振动、灯光),Notification.DEFAULT_LIGHTS(仅应用灯光默认行为)

(7)flags=0x10
  1. 表示 Notification 被设置了某些标志

  2. flags 是一个标志位,可以包含多个值,例如,Notification.FLAG_ONGOING_EVENT(表示 Notification 是一个持续进行的事件,例如,音乐播放),Notification.FLAG_AUTO_CANCEL(表示当用户点击通知时,通知应该被取消)

(8)color=0x00000000
  1. 表示 Notification 的颜色被设置为透明(黑色,但透明度为 0%),如果为 null 或设置为透明,则使用系统默认的颜色

  2. 可以使用 setColor 方法为 Notification 指定一个颜色

(9)vis=PRIVATE
  • 可能是日志输出信息的一些其他部分

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com