Android 实现企业微信自动打卡任务同时支持钉钉急速打卡模式

本文介绍了如何通过编程实现企业微信和钉钉的自动打卡功能。作者分享了从获取应用包名到编写定时服务,再到应用跳转的详细步骤,以实现根据设定时间自动打卡的目标。最后,展示了脚本实际运行的效果,并表示在帮助同事的同时也提升了自身的技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

之前公司一直是弹性工作制 以工作任务为目标 自由上下班
日子过的不亦乐乎

自从人事来了以后 就颁布了第一条法令
1

看到这个无疑的痛苦的 对于一个几年没有打卡散人来说!!!
同时公司的财务小姐姐和其他同事也硬邀 工程师来开发一个脚本任务 来执行自动打卡

听起来好像还不错
为了大家的福利 说干就撸起袖子
1

准备工作

要先完成app之间的跳转
首先先拿到企业微信的包名钉钉的包名
这个无论你是adb命令实现 还是百度直接找 都很方便


ADB命令方式

  1. 依旧数据线连接手机,注意都是调试模式哈,不然电脑无权访问手机
  2. 电脑端Crtl+R 输入cmd 回车
  3. 输入 adb devices 检验是否成功连接手机
  4. 输入 adb shell 进入手机的shell
  5. 输入 pm list packages 显示所有应用包名

1
通过命令获取到 钉钉的包名:com.alibaba.android.rimet
通过命令获取到 企业微信的包名:com.tencent.wework

也可以直接百度搜
在这里插入图片描述


拿到包名以后要做的任务 就是启动定时器完成应用跳转 达到唤醒应用的效果
因为企业微信和钉钉急速打卡只要打开app在指定的打卡范围内就可以自动打卡

ok 我们已知这个条件以后 就很方便写程序了

实现流程

启动前台服务

 //启动服务
Intent intentService = new Intent(MainActivity.this, AutomaticTaskService.class);
startService(intentService);

不断的刷新通知任务

 NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
        builder.setSmallIcon(R.mipmap.timer_task);
        builder.setContentTitle("新消息").setContentText("这是一条定时任务");       
        startForeground(1, builder.build());

在服务中起了一个定时的线程来根据设置的时间跳转指定包名的app

   new Thread() {
            @Override
            public void run() {
                super.run();
                while (isRun) {
                    //你需要执行的任务
                    try {
                        Thread.sleep(50000);
                    } catch (InterruptedException es) {
                        es.printStackTrace();
                    }

                    //实例化SharedPreferences对象(第一步)
                    SharedPreferences mySharedPreferences = getSharedPreferences("shared", Activity.MODE_PRIVATE);

                    String starTime = mySharedPreferences.getString("startTime", "");
                    String endTime = mySharedPreferences.getString("endTime", "");

                    Log.e(TAG, " starTime -------- " + starTime);
                    Log.e(TAG, " endTime  --------- " + endTime);

                    String strTime = getSystemTime() + "";
                    strTime = strTime.substring(0, 5);
                    Log.e(TAG, " 系统时间 --------- " + strTime);
                    if (strTime.equals(starTime)) {
                        //设置了上班打卡时间
                        ImplementUtils.openTask(getBaseContext());
                    } else if (strTime.equals(endTime)) {
                        //设置了下班打卡时间
                        ImplementUtils.openTask(getBaseContext());
                    }
                }
            }
        }.start();     
        //走OnDestory停止的服务,系统保留了service的onStartCommand方法中的变量,等待系统重启此服务
        return START_STICKY;
    }

应用跳转那块的代码都是死的
在这里插入图片描述

		//设置意图
        Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
        resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        if (packageInfo != null) {
            resolveIntent.setPackage(packageInfo.packageName);
        }
        List<ResolveInfo> apps = packageManager.queryIntentActivities(resolveIntent, 0);
        ResolveInfo resolveInfo = apps.iterator().next();
        if (resolveInfo != null && packageInfo != null) {
            String className = resolveInfo.activityInfo.name;
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            Log.e(TAG, "packageName ------------" + packageInfo.packageName);
            ComponentName cn = new ComponentName(packageInfo.packageName, className);
            intent.setComponent(cn);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
            pendingIntent.send();
         }

实现效果及功能演示

等一下这个gif图 手机抓拍 时间有点长 大概1分钟后 是有跳转逻辑 和功能实现的
该脚本支持 企业微信和钉钉急速打卡模式 再设置了 打卡时间和打卡模式以后 到了指定时间
脚本会自动打开应用跳转指定打卡APP(钉钉或企业微信)

在这里插入图片描述

总结

在帮助大家同时 自己又学习了知识 何乐而不为呢?啊哈哈哈
在这里插入图片描述

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕氏春秋i

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值