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

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

前言

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

自从人事来了以后 就颁布了第一条法令
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
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吕氏春秋i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值