Android 实现钉钉自动打卡功能
程序员文章站
2022-07-06 13:10:29
提前准备首先我们需要一直不用的android手机,插上公司的电源。下载安装钉钉并设置为极速打卡。自动打开我们只需要启动一个服务,定时打开钉钉应用后再返回即可。防止熄屏这华为手机并没有永不息屏的选项,所...
提前准备
首先我们需要一直不用的android手机,插上公司的电源。下载安装钉钉并设置为极速打卡。
自动打开
我们只需要启动一个服务,定时打开钉钉应用后再返回即可。
防止熄屏
这华为手机并没有永不息屏的选项,所以我们需要设置一下防止自动息屏。
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // 设置不自动息屏 getwindow().setflags(windowmanager.layoutparams.flag_keep_screen_on, windowmanager.layoutparams.flag_keep_screen_on); setcontentview(r.layout.activity_main); }
打开钉钉,签到后返回
核心程序
/** * * @param packagename 包名 */ public void openapplication(string packagename) { packagemanager packagemanager = getpackagemanager(); packageinfo pi = null; try { pi = packagemanager.getpackageinfo(packagename, 0); } catch (packagemanager.namenotfoundexception e) { } intent resolveintent = new intent(intent.action_main, null); resolveintent.addcategory(intent.category_launcher); resolveintent.setpackage(pi.packagename); list<resolveinfo> apps = packagemanager.queryintentactivities(resolveintent, 0); resolveinfo resolveinfo = apps.iterator().next(); if (resolveinfo != 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); componentname cn = new componentname(packagename, classname); intent.setcomponent(cn); startactivity(intent); } }
- 打开cmd查找钉钉的包名
adb devices
adb shell
pm list package | grep alibaba 查找阿里巴巴相关的所有包名,也可以直接pm list package查找所有包名
// 打开钉钉 string packagename = "com.alibaba.android.rimet"; openapplication(packagename); // 延迟2s,自动打开 try { thread.sleep(2000); } catch (interruptedexception e) { e.printstacktrace(); } // 返回自动打卡app string packagenamenew = "com.example.dingding"; openapplication(packagenamenew);
创建一个service来进行自动打卡,使用java的cron4j库来执行定时任务,使用可以参见以前的博客。jfinal用cron4j执行定时任务
public class dingservice extends service { private final string tag = "dingservice"; @override public ibinder onbind(intent intent) { return null; } @override public void oncreate() { super.oncreate(); log.e(tag, "service start!"); clockthread ct = new clockthread(); ct.start(); } @override public int onstartcommand(intent intent, int flags, int startid) { return super.onstartcommand(intent, flags, startid); } @override public void ondestroy() { super.ondestroy(); } /** * * @param packagename 包名 */ public void openapplication(string packagename) {...} public class clockthread extends thread { public void run() { scheduler scheduler = new scheduler(); //设置打开时间为工作日的 7:50,11:50,13:50,17:50 scheduler.schedule("50 7,11,13,17 * * mon,tue,wed,thu,fri", new thread() { @override public void run() { string packagename = "com.alibaba.android.rimet"; openapplication(packagename); try { thread.sleep(2000); } catch (interruptedexception e) { e.printstacktrace(); } string packagenamenew = "com.example.dingding"; openapplication(packagenamenew); } }); scheduler.start(); } } }
最后在mainactivity中启动服务即可。
随机时间
为了让打卡更加真实,每天的打卡时间尽可能尽量不一样。我们用一个scheduler(调度任务)每天在固定时间如每天早上6点,创建四个时间随机的调度任务来完成每日的打卡。
public class clockthread extends thread { public void run() { scheduler = new scheduler(); scheduler.schedule("0 6 * * mon,tue,wed,thu,fri", new thread() { @override public void run() { if(scheduler1 != null){ scheduler1.stop(); scheduler1 = null; } if(scheduler2 != null){ scheduler2.stop(); scheduler2 = null; } if(scheduler3 != null){ scheduler3.stop(); scheduler3 = null; } if(scheduler4 != null){ scheduler4.stop(); scheduler4 = null; } // 随机在7:00 ~ 7:27之间打卡 // scheduler1 scheduler.schedule(new random().nextint(28)+" 7 * * *",new thread()) // 随机在11:30 ~ 11:57之间打卡 // scheduler2 scheduler.schedule((30 + new random().nextint(28))+" 11 * * *",new thread()) // 随机在13:00 ~ 13:27之间打卡 // scheduler3 scheduler.schedule(new random().nextint(28)+" 13 * * *",new thread()) // 随机在17:30 ~ 17:57之间打卡 // scheduler4 scheduler.schedule((30 + new random().nextint(28))+" 17 * * *",new thread()) } }); scheduler.start(); } }
以上就是android 实现钉钉自动打卡功能的详细内容,更多关于android 钉钉自动打卡的资料请关注其它相关文章!
推荐阅读
-
Android 取消蓝牙配对框实现自动配对功能
-
Android编程实现canvas绘制柱状统计图功能【自动计算宽高及分度值、可左右滑动】
-
Android编程实现canvas绘制饼状统计图功能示例【自动适应条目数量与大小】
-
Android实现短信验证码自动填写功能
-
Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例
-
Android编程实现TextView垂直自动滚动功能【附demo源码下载】
-
Android开发之文本内容自动朗读功能实现方法
-
Android 取消蓝牙配对框实现自动配对功能
-
Android实现短信验证码自动填写功能
-
Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例