Android 实现钉钉自动打卡功能
程序员文章站
2022-04-12 13:47:24
提前准备首先我们需要一直不用的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实现获取短信验证码并自动填写功能
-
Android辅助功能实现自动抢红包(附源码)
-
【Java用法】使用Java开发连接钉钉应用实现钉钉通知的功能
-
Android开发之ViewFlipper自动播放图片功能实现方法示例
-
Android使用AutoCompleteTextView实现自动填充功能的案例
-
Android通过SharedPreferences实现自动登录记住用户名和密码功能
-
Android实现打开手机淘宝并自动识别淘宝口令弹出商品信息功能
-
钉钉语音信息怎么转换成文字? 钉钉语音自动转文字功能
-
Android开发实现自动切换文字TextSwitcher功能示例