autojs发送通知修改图标

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂


效果

完整源码

importClass(android.content.ComponentName);
importClass(android.app.PendingIntent);
importClass(android.content.Context);
importClass(android.graphics.Bitmap);
importClass(android.graphics.drawable.Icon);
importClass(android.app.NotificationChannel);
importClass(android.app.NotificationManager);
importClass(android.app.Notification);
/* -------------------------------------------------------------------------- */
let icon = getIcon();
log(icon.small);
events.on("exit", function () {
  icon.large.recycle();
});
notice("牙叔教程 老棒了");
/* -------------------------------------------------------------------------- */
function notice(msg) {
  var manager = context.getSystemService(android.app.Service.NOTIFICATION_SERVICE);
  var channel = new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH);
  channel.setShowBadge(false); // 显示徽章, 桌面app图标右上角有小红点
  manager.createNotificationChannel(channel);
  notification = new Notification.Builder(context, "id")
    .setContentTitle("公众号: 牙叔教程")
    .setSubText("牙叔教程 简单易懂")
    .setContentText(msg)
    .setSmallIcon(icon.small)
    .setLargeIcon(icon.large)
    .setTicker("this is ticker")
    .setAutoCancel(true)
    .setContentIntent(
      PendingIntent.getActivity(
        context,
        0,
        new Intent().setComponent(
          new ComponentName(context.getPackageName(), "org.autojs.autojs.ui.main.MainActivity")
        ),
        PendingIntent.FLAG_UPDATE_CURRENT
      )
    )
    .build();
  manager.notify(0, notification);
  log("1");
}
function getIcon() {
  let bitmap = createBitmap();
  return {
    small: Icon.createWithBitmap(bitmap),
    large: bitmap,
  };
}
function createBitmap() {
  // 24dp
  let size = 36;
  let width = dp2px(size);
  let paint = new Paint();
  paint.setStyle(Paint.Style.FILL);
  paint.setAntiAlias(true);
  let bitmap = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888);
  let colorList = ["#dd7694", "#c3d94e", "#535164", "#779649"];
  let canvas = new Canvas(bitmap);
  paint.setColor(colors.parseColor(colorList[0]));
  canvas.drawRect(0, 0, width / 2, width / 2, paint);
  paint.setColor(colors.parseColor(colorList[1]));
  canvas.drawRect(width / 2, 0, width, width / 2, paint);
  paint.setColor(colors.parseColor(colorList[2]));
  canvas.drawRect(0, width / 2, (width / 2) * 1, width, paint);
  paint.setColor(colors.parseColor(colorList[3]));
  canvas.drawRect(width / 2, width / 2, width, width, paint);
  return bitmap;
}
function dp2px(dp) {
  const scale = context.getResources().getDisplayMetrics().density;
  return Math.floor(dp * scale + 0.5);
}


备注

通知栏图标一共两个

左侧是小的, 右侧是大的

左侧通过setSmallIcon设置

经测试,

华为手机上, 左侧小图标显示正常;

小米手机上, 左侧小图标一直显示为app的logo,

也就是说在小米手机上无法修改.

打包时, 修改app的logo, 这样通知的小图标就改了

环境


手机: Mi 11 Pro


Android版本: 12


Autojs版本: 9.1.8

相关教程

https://www.yuque.com/go/doc/52685290


https://www.yuque.com/go/doc/65146895


名人名言


思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程


声明


部分内容来自网络
本教程仅用于学习, 禁止用于其他用途



相关文章
|
6月前
如何解决由引起的IQKeyboardManager部分页面返回的键盘高度比实际小或最后收到键盘隐藏通知却显示了键盘问题
如何解决由引起的IQKeyboardManager部分页面返回的键盘高度比实际小或最后收到键盘隐藏通知却显示了键盘问题
104 0
|
6月前
|
iOS开发
个推发送消息各字段在系统状态栏显示的信息,点击消息图标激活应用传递的信息,应用在线收到的透传消息信息
个推发送消息各字段在系统状态栏显示的信息,点击消息图标激活应用传递的信息,应用在线收到的透传消息信息
57 0
|
6月前
|
Shell 开发工具 git
聊天功能演示系统发布后出现有些页面滚动与鼠标点击问题解决
聊天功能演示系统发布后出现有些页面滚动与鼠标点击问题解决
43 0
|
JavaScript
js仿通知栏新消息实时推送更新效果
js仿通知栏新消息实时推送更新效果
75 0
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
477 0
|
移动开发 iOS开发
H5:ios 取消图片点击保存
H5:ios 取消图片点击保存
101 0
|
Android开发
Android开发案例 点击按钮出现 简易的消息提示框
Android开发案例 点击按钮出现 简易的消息提示框
272 0
Android开发案例 点击按钮出现 简易的消息提示框
|
Web App开发
Chrome 插件开发-桌面通知设置实战演示,设置通知显示、存在时间
Chrome 插件开发-桌面通知设置实战演示,设置通知显示、存在时间
729 0
Chrome 插件开发-桌面通知设置实战演示,设置通知显示、存在时间
🔊代码预览超链接迁移通知
最新有小伙伴们反馈说访问文章中的超链接的时候有些不稳定或无法访问的情况,现在正在找解决办法,之后会逐步修改文章中的码预览超链接。
890 0