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文档, 最后才是群里问问
--- 牙叔教程


声明


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



相关文章
|
1月前
|
搜索推荐
【sgUploadTray_v2】自定义组件:升级版上传托盘自定义组件,可实时查看上传列表进度,可以通过选项卡切换上传中、成功、失败的队列,支持翻页,解决了列表内容太多导致卡顿的情况。(一)
【sgUploadTray_v2】自定义组件:升级版上传托盘自定义组件,可实时查看上传列表进度,可以通过选项卡切换上传中、成功、失败的队列,支持翻页,解决了列表内容太多导致卡顿的情况。
【sgUploadTray_v2】自定义组件:升级版上传托盘自定义组件,可实时查看上传列表进度,可以通过选项卡切换上传中、成功、失败的队列,支持翻页,解决了列表内容太多导致卡顿的情况。(一)
|
6月前
|
JavaScript
js仿通知栏新消息实时推送更新效果
js仿通知栏新消息实时推送更新效果
45 0
|
6月前
|
iOS开发
iOS应用内弹窗通知怎么实现?其实很简单,这样,这样,再这样.....你学会了么?
iOS应用内弹窗通知怎么实现?其实很简单,这样,这样,再这样.....你学会了么?
98 0
|
9月前
|
JavaScript 前端开发
如何阻止在 vue项目中快速双击俩次新增/编辑连续发送俩次请求
如何阻止在 vue项目中快速双击俩次新增/编辑连续发送俩次请求
53 0
|
9月前
|
小程序 开发工具 开发者
微信小程序订阅消息点了 “总保持以上选择、全部拒绝,不在询问” 无法再次弹出
微信小程序订阅消息点了 “总保持以上选择、全部拒绝,不在询问” 无法再次弹出
1021 0
|
12月前
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
326 0
|
移动开发 JavaScript HTML5
|
移动开发 iOS开发
H5:ios 取消图片点击保存
H5:ios 取消图片点击保存
|
Android开发
Android开发案例 点击按钮出现 简易的消息提示框
Android开发案例 点击按钮出现 简易的消息提示框
234 0
Android开发案例 点击按钮出现 简易的消息提示框
|
前端开发 开发工具 Android开发
iOS监听物理截图自动生成截图并跳转到反馈页面进行显示(截图内容包括系统的弹框视图UIAlertView/Controller)
iOS监听物理截图自动生成截图并跳转到反馈页面进行显示(截图内容包括系统的弹框视图UIAlertView/Controller)
313 0
iOS监听物理截图自动生成截图并跳转到反馈页面进行显示(截图内容包括系统的弹框视图UIAlertView/Controller)