赞
踩
之前公司一直是弹性工作制 以工作任务为目标 自由上下班
日子过的不亦乐乎
自从人事来了以后 就颁布了第一条法令
看到这个无疑的痛苦的 对于一个几年没有打卡散人来说!!!
同时公司的财务小姐姐和其他同事也硬邀 工程师来开发一个脚本任务 来执行自动打卡
听起来好像还不错
为了大家的福利 说干就撸起袖子
要先完成app之间的跳转
首先先拿到企业微信的包名
和钉钉的包名
这个无论你是adb命令实现 还是百度直接找 都很方便
ADB命令方式
- 依旧数据线连接手机,注意都是调试模式哈,不然电脑无权访问手机
- 电脑端Crtl+R 输入cmd 回车
- 输入 adb devices 检验是否成功连接手机
- 输入 adb shell 进入手机的shell
- 输入 pm list packages 显示所有应用包名
通过命令获取到 钉钉的包名: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(钉钉或企业微信)
在帮助大家同时 自己又学习了知识 何乐而不为呢?啊哈哈哈
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。